<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"> <head> <meta http-equiv=Content-Type content="text/html; charset=utf-8"> <meta name=ProgId content=Word.Document> <meta name=Generator content="Microsoft Word 15"> <meta name=Originator content="Microsoft Word 15"> <link rel=File-List href="LivingOnTheEdge-AutomaticMerging.fld/filelist.xml"> <link rel=Edit-Time-Data href="LivingOnTheEdge-AutomaticMerging.fld/editdata.mso"> <!--[if !mso]> <style> v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]--><!--[if gte mso 9]><xml> <o:DocumentProperties> <o:Author>Julia Angell</o:Author> <o:LastAuthor>Tom Tyler</o:LastAuthor> <o:Revision>2</o:Revision> <o:TotalTime>1</o:TotalTime> <o:Created>2024-08-22T01:31:00Z</o:Created> <o:LastSaved>2024-08-22T01:31:00Z</o:LastSaved> <o:Pages>1</o:Pages> <o:Words>964</o:Words> <o:Characters>5501</o:Characters> <o:Company>Perforce Software</o:Company> <o:Lines>45</o:Lines> <o:Paragraphs>12</o:Paragraphs> <o:CharactersWithSpaces>6453</o:CharactersWithSpaces> <o:Version>16.00</o:Version> </o:DocumentProperties> <o:OfficeDocumentSettings> <o:AllowPNG/> </o:OfficeDocumentSettings> </xml><![endif]--> <link rel=themeData href="LivingOnTheEdge-AutomaticMerging.fld/themedata.thmx"> <link rel=colorSchemeMapping href="LivingOnTheEdge-AutomaticMerging.fld/colorschememapping.xml"> <!--[if gte mso 9]><xml> <w:WordDocument> <w:TrackRevisions/> <w:TrackMoves>false</w:TrackMoves> <w:TrackFormatting/> <w:PunctuationKerning/> <w:DrawingGridHorizontalSpacing>18 pt</w:DrawingGridHorizontalSpacing> <w:DrawingGridVerticalSpacing>18 pt</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>0</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>JA</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:StyleSortMethod>0</w:StyleSortMethod> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:UseWord2010TableStyleRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:EnableOpenTypeKerning/> <w:DontFlipMirrorIndents/> <w:OverrideTableStyleHps/> </w:Compatibility> <w:DoNotOptimizeForBrowser/> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="--"/> <m:smallFrac m:val="off"/> <m:dispDef m:val="off"/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapRight/> <m:intLim m:val="subSup"/> <m:naryLim m:val="subSup"/> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false" DefSemiHidden="false" DefQFormat="false" DefPriority="99" LatentStyleCount="376"> <w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index 9"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" Name="toc 9"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="header"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footer"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="index heading"/> <w:LsdException Locked="false" Priority="35" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="caption"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of figures"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="envelope return"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="footnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="line number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="page number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote reference"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="endnote text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="table of authorities"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="macro"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="toa heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Bullet 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Number 5"/> <w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Closing"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Signature"/> <w:LsdException Locked="false" Priority="1" SemiHidden="true" UnhideWhenUsed="true" Name="Default Paragraph Font"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="List Continue 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Message Header"/> <w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Salutation"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Date"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text First Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Note Heading"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Body Text Indent 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Block Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hyperlink"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="FollowedHyperlink"/> <w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Document Map"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Plain Text"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="E-mail Signature"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Top of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Bottom of Form"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal (Web)"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Acronym"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Address"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Cite"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Code"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Definition"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Keyboard"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Preformatted"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Sample"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Typewriter"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="HTML Variable"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Normal Table"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="annotation subject"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="No List"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Outline List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Simple 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Classic 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Colorful 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Columns 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Grid 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 4"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 5"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 7"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table List 8"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table 3D effects 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Contemporary"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Elegant"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Professional"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Subtle 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 1"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 2"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Web 3"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Balloon Text"/> <w:LsdException Locked="false" Priority="59" Name="Table Grid"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Table Theme"/> <w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="true" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" Name="Light List"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" SemiHidden="true" Name="Revision"/> <w:LsdException Locked="false" Priority="34" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" SemiHidden="true" UnhideWhenUsed="true" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" SemiHidden="true" UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 1"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 1"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 2"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 2"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 3"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 3"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 4"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 4"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 5"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 5"/> <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light Accent 6"/> <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/> <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/> <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/> <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/> <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful Accent 6"/> <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful Accent 6"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Mention"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Smart Hyperlink"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Hashtag"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Unresolved Mention"/> <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" Name="Smart Link"/> </w:LatentStyles> </xml><![endif]--> <style> <!-- /* Font Definitions */ @font-face {font-family:Wingdings; panose-1:5 0 0 0 0 0 0 0 0 0; mso-font-charset:2; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:0 268435456 0 0 -2147483648 0;} @font-face {font-family:"Cambria Math"; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:-536870145 1107305727 0 0 415 0;} @font-face {font-family:Cambria; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:0; mso-generic-font-family:roman; mso-font-pitch:variable; mso-font-signature:-536870145 1073743103 0 0 415 0;} @font-face {font-family:Times; panose-1:2 11 6 4 2 2 2 2 2 4; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 0 0 0 1 0;} @font-face {font-family:"Lucida Grande"; panose-1:2 11 6 0 4 5 2 2 2 4; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:-520090897 1342218751 0 0 447 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0in; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Cambria",serif; mso-fareast-font-family:Cambria; mso-bidi-font-family:"Times New Roman";} a:link, span.MsoHyperlink {mso-style-priority:99; mso-style-unhide:no; color:blue; text-decoration:underline; text-underline:single;} a:visited, span.MsoHyperlinkFollowed {mso-style-noshow:yes; mso-style-priority:99; color:purple; mso-themecolor:followedhyperlink; text-decoration:underline; text-underline:single;} strong {mso-style-priority:22; mso-style-unhide:no; mso-bidi-font-weight:normal;} p {mso-style-priority:99; mso-style-unhide:no; margin:0in; mso-para-margin-top:.01gd; mso-para-margin-right:0in; mso-para-margin-bottom:.01gd; mso-para-margin-left:0in; mso-pagination:widow-orphan; font-size:10.0pt; font-family:Times; mso-fareast-font-family:Cambria; mso-bidi-font-family:"Times New Roman";} p.MsoAcetate, li.MsoAcetate, div.MsoAcetate {mso-style-noshow:yes; mso-style-priority:99; mso-style-link:"Balloon Text Char"; margin:0in; mso-pagination:widow-orphan; font-size:9.0pt; font-family:"Lucida Grande"; mso-fareast-font-family:Cambria; mso-bidi-font-family:"Times New Roman";} p.MsoRMPane, li.MsoRMPane, div.MsoRMPane {mso-style-noshow:yes; mso-style-priority:99; mso-style-unhide:no; mso-style-parent:""; margin:0in; mso-pagination:widow-orphan; font-size:12.0pt; font-family:"Cambria",serif; mso-fareast-font-family:Cambria; mso-bidi-font-family:"Times New Roman";} span.BalloonTextChar {mso-style-name:"Balloon Text Char"; mso-style-noshow:yes; mso-style-priority:99; mso-style-unhide:no; mso-style-locked:yes; mso-style-link:"Balloon Text"; mso-ansi-font-size:9.0pt; mso-bidi-font-size:9.0pt; font-family:"Lucida Grande"; mso-ascii-font-family:"Lucida Grande"; mso-hansi-font-family:"Lucida Grande";} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-size:10.0pt; mso-ansi-font-size:10.0pt; mso-bidi-font-size:10.0pt; mso-ascii-font-family:Cambria; mso-fareast-font-family:Cambria; mso-hansi-font-family:Cambria; mso-font-kerning:0pt; mso-ligatures:none;} @page WordSection1 {size:8.5in 11.0in; margin:1.0in 1.25in 1.0in 1.25in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.WordSection1 {page:WordSection1;} /* List Definitions */ @list l0 {mso-list-id:802114832; mso-list-template-ids:1516428998;} @list l0:level1 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Symbol;} @list l0:level2 {mso-level-number-format:bullet; mso-level-text:o; mso-level-tab-stop:1.0in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:"Courier New"; mso-bidi-font-family:"Times New Roman";} @list l0:level3 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:1.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l0:level4 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:2.0in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l0:level5 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:2.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l0:level6 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:3.0in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l0:level7 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:3.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l0:level8 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:4.0in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} @list l0:level9 {mso-level-number-format:bullet; mso-level-text:; mso-level-tab-stop:4.5in; mso-level-number-position:left; text-indent:-.25in; mso-ansi-font-size:10.0pt; font-family:Wingdings;} ol {margin-bottom:0in;} ul {margin-bottom:0in;} --> </style> <!--[if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-parent:""; mso-padding-alt:0in 5.4pt 0in 5.4pt; mso-para-margin:0in; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Cambria",serif;} </style> <![endif]--><!--[if gte mso 9]><xml> <o:shapedefaults v:ext="edit" spidmax="1026"/> </xml><![endif]--><!--[if gte mso 9]><xml> <o:shapelayout v:ext="edit"> <o:idmap v:ext="edit" data="1"/> </o:shapelayout></xml><![endif]--> </head> <body lang=EN-US link=blue vlink=purple style='tab-interval:.5in;word-wrap: break-word'> <div class=WordSection1> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'>Living on the Edge – Automatic Merging<o:p></o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'>By Tom Tyler<o:p></o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'>The topic of fully automating merges comes up every now and again. By “fully automating”, I mean taking the human out of the resolve process entirely for changes that don’t require either an interactive resolve or advanced integration options. A changelist is submitted by a human on one branch, and that submit initiates one or more automated integrate/resolve/submit operations to one or more target branches along a predefined merge pathway that reflects your current branching strategy.<o:p></o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'>Eliminating humans from the process seems like a bold step. And indeed it is! Perforce’s merging algorithms are a “best guess”, based on what I call “text diff-chunk based logic.” It’s a tremendous value of Perforce that it does this so well, but there’s only just so far that it can take you. Perforce doesn’t try to understand the semantics of the C++ or Java or Perl code you’re writing, and it’s entirely possible that its best guess (the resolve result) won’t be what you want. Such merge errors might only be detected at compile time. The worst case scenario is that you introduce a “semantic merge” problem, where the result of an automated merge is incorrect, but compiles OK and sneaks past testing, possibly even surviving long enough to be a customer-visible bug. <strong><i style='mso-bidi-font-style:normal'>Eek!</i></strong><o:p></o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'>Because they can escape detection longer, semantic merge problems are harder to fix later, since the change is no longer fresh in the mind of the developer who originated the change. (It’s usually best to merge changes soon after they are made – ideally by the developer who originated the change).<o:p></o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif; mso-no-proof:yes'><!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"> <v:stroke joinstyle="miter"/> <v:formulas> <v:f eqn="if lineDrawn pixelLineWidth 0"/> <v:f eqn="sum @0 1 0"/> <v:f eqn="sum 0 0 @1"/> <v:f eqn="prod @2 1 2"/> <v:f eqn="prod @3 21600 pixelWidth"/> <v:f eqn="prod @3 21600 pixelHeight"/> <v:f eqn="sum @0 0 1"/> <v:f eqn="prod @6 1 2"/> <v:f eqn="prod @7 21600 pixelWidth"/> <v:f eqn="sum @8 21600 0"/> <v:f eqn="prod @7 21600 pixelHeight"/> <v:f eqn="sum @10 21600 0"/> </v:formulas> <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/> <o:lock v:ext="edit" aspectratio="t"/> </v:shapetype><v:shape id="Picture_x0020_1" o:spid="_x0000_i1027" type="#_x0000_t75" alt="TrainCrash-WIP1" style='width:6in;height:196pt;visibility:visible; mso-wrap-style:square'> <v:imagedata src="LivingOnTheEdge-AutomaticMerging.fld/image001.png" o:title="TrainCrash-WIP1"/> </v:shape><![endif]--><![if !vml]><img width=432 height=196 src="LivingOnTheEdge-AutomaticMerging.fld/image001.png" alt=TrainCrash-WIP1 v:shapes="Picture_x0020_1"><![endif]></span><span style='font-size:12.0pt; mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'><o:p></o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'>Figure 1: <span style='mso-spacerun:yes'> </span>The Risk of Automated Merging<o:p></o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'>Maybe you’re thinking, “This is too risky! Why would anyone ever do this?” Visions of train wrecks pop in your head! But there are indeed reasons to do it! (To consider automated merging, not to wreck a train).<o:p></o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'>The risk of semantic merge problems is real, but there are considerable benefits to factor in when evaluating whether automated merging is right for your organization. The main benefit is ensuring fast propagation of changes. Automated merging helps ensure that once-fixed bugs never rear their ugly heads again. Besides, semantic merge problems occur even without automating merges if the human whose job it is to catch the merge problems misses them. So, while automated merging might increase the risk of having more semantic merge problems, it can also decrease other types merge problems, including the dreaded “repeat offender” bug.<o:p></o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'>Semantic merge problem risks can be reduced by automating merges only along pathways most likely to produce a good result. For example, you might automate merges from a mostly stable release branch used (almost) exclusively for bug fixes back to MAIN.<o:p></o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p> <p class=MsoNormal style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt; margin-left:0in;mso-para-margin-top:.01gd;mso-para-margin-right:0in;mso-para-margin-bottom: .01gd;mso-para-margin-left:0in'><span style='font-family:"Times New Roman",serif; mso-no-proof:yes'><!--[if gte vml 1]><v:shape id="Picture_x0020_2" o:spid="_x0000_i1026" type="#_x0000_t75" alt="AutoMergeGraphic2" style='width:6in;height:324pt; visibility:visible;mso-wrap-style:square'> <v:imagedata src="LivingOnTheEdge-AutomaticMerging.fld/image002.png" o:title="AutoMergeGraphic2"/> </v:shape><![endif]--><![if !vml]><img width=432 height=324 src="LivingOnTheEdge-AutomaticMerging.fld/image002.png" alt=AutoMergeGraphic2 v:shapes="Picture_x0020_2"><![endif]></span><span style='font-family:"Times New Roman",serif'><o:p></o:p></span></p> <p class=MsoNormal style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt; margin-left:0in;mso-para-margin-top:.01gd;mso-para-margin-right:0in;mso-para-margin-bottom: .01gd;mso-para-margin-left:0in'><span style='font-family:"Times New Roman",serif'>Figure 2: <span style='mso-spacerun:yes'> </span>Automerge - Fast Bugfix Propagation</span><span style='mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'><o:p></o:p></span></p> <p class=MsoNormal style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt; margin-left:0in;mso-para-margin-top:.01gd;mso-para-margin-right:0in;mso-para-margin-bottom: .01gd;mso-para-margin-left:0in'><span style='mso-bidi-font-size:10.0pt; font-family:"Times New Roman",serif'><o:p> </o:p></span></p> <p class=MsoNormal style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt; margin-left:0in;mso-para-margin-top:.01gd;mso-para-margin-right:0in;mso-para-margin-bottom: .01gd;mso-para-margin-left:0in'><span style='mso-bidi-font-size:10.0pt; font-family:"Times New Roman",serif'>There are a lot of things to consider if you want to automated merges. Here are just a few:<o:p></o:p></span></p> <ul style='margin-top:0in' type=disc> <li class=MsoNormal style='margin-top:.1pt;margin-bottom:.1pt;mso-para-margin-top: .01gd;mso-para-margin-bottom:.01gd;mso-list:l0 level1 lfo1;tab-stops:list .5in'><span style='mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'>Define tag names for each branch, e.g. FGS-3.0-R = </span><span style='font-size: 11.0pt;mso-bidi-font-size:10.0pt;font-family:"Courier New";mso-bidi-font-family: "Times New Roman"'>//Eng/FGS/rel/3.0-R/…</span><span style='mso-bidi-font-size: 10.0pt;font-family:"Times New Roman",serif'><o:p></o:p></span></li> <li class=MsoNormal style='margin-top:.1pt;margin-bottom:.1pt;mso-para-margin-top: .01gd;mso-para-margin-bottom:.01gd;mso-list:l0 level1 lfo1;tab-stops:list .5in'><span style='mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'>Define merge paths between branches, e.g. FGS-3.0-R to MAIN.<o:p></o:p></span></li> <li class=MsoNormal style='margin-top:.1pt;margin-bottom:.1pt;mso-para-margin-top: .01gd;mso-para-margin-bottom:.01gd;mso-list:l0 level1 lfo1;tab-stops:list .5in'><span style='mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'>Consider which merge paths are most appropriate for automated merging.<o:p></o:p></span></li> <li class=MsoNormal style='margin-top:.1pt;margin-bottom:.1pt;mso-para-margin-top: .01gd;mso-para-margin-bottom:.01gd;mso-list:l0 level1 lfo1;tab-stops:list .5in'><span style='mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'>Provide a way for an admin to enable/disable each defined merge pathway.<o:p></o:p></span></li> <li class=MsoNormal style='margin-top:.1pt;margin-bottom:.1pt;mso-para-margin-top: .01gd;mso-para-margin-bottom:.01gd;mso-list:l0 level1 lfo1;tab-stops:list .5in'><span style='mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'>Provide developers a way to avoid automerging particular changelists (e.g. with special text in the changelist description).<o:p></o:p></span></li> <li class=MsoNormal style='margin-top:.1pt;margin-bottom:.1pt;mso-para-margin-top: .01gd;mso-para-margin-bottom:.01gd;mso-list:l0 level1 lfo1;tab-stops:list .5in'><span style='mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'>Sending email notifications when automatic merges occur, with a subject line indicating if it succeeded or if interactive (human) resolution is required, etc.<o:p></o:p></span></li> </ul> <p class=MsoNormal style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt; margin-left:0in;mso-para-margin-top:.01gd;mso-para-margin-right:0in;mso-para-margin-bottom: .01gd;mso-para-margin-left:0in'><span style='mso-bidi-font-size:10.0pt; font-family:"Times New Roman",serif'><o:p> </o:p></span></p> <p class=MsoNormal style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt; margin-left:0in;mso-para-margin-top:.01gd;mso-para-margin-right:0in;mso-para-margin-bottom: .01gd;mso-para-margin-left:0in'><span style='mso-bidi-font-size:10.0pt; font-family:"Times New Roman",serif'>Automated merging works best if you automate merges from bugfix-only branches. In more general terms, automated merging works best if the branch from which you’re automatically merging contains focused changes, tightly controlled changes. Things like general code cleanup will make for a mess, so it’s best if that sort of activity occur in new development branches, not release maintenance branches. In branching strategies where products change extensively on long-lived release branches (as opposed to bugfix-only release branches), the success rate for automatic merges would likely be lower. Automated merging may not be appropriate in that case.<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Times New Roman",serif'><o:p> </o:p></span></p> <p class=MsoNormal><span style='font-family:"Times New Roman",serif;mso-no-proof: yes'><!--[if gte vml 1]><v:shape id="Picture_x0020_3" o:spid="_x0000_i1025" type="#_x0000_t75" alt="AutoMergeGraphic" style='width:6in;height:324pt; visibility:visible;mso-wrap-style:square'> <v:imagedata src="LivingOnTheEdge-AutomaticMerging.fld/image003.png" o:title="AutoMergeGraphic"/> </v:shape><![endif]--><![if !vml]><img width=432 height=324 src="LivingOnTheEdge-AutomaticMerging.fld/image003.png" alt=AutoMergeGraphic v:shapes="Picture_x0020_3"><![endif]></span><span style='font-family:"Times New Roman",serif'><o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Times New Roman",serif'>Figure 3: <span style='mso-spacerun:yes'> </span>Automatic Merge Paths<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Times New Roman",serif'><o:p> </o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><strong><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'>Which paths should be automated?<o:p></o:p></span></strong></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'>Take a look at the diagram above. There’s a lot going on there! That depicts an advanced branching strategy involving a mainline, release branches (rel/*-R), integration branches (int/*-I), and development branches. Start with automating merges from the release branches to MAIN only. In the example above, the merge pathways from rel/8.5-R to rel/9.0-R and separately from 9.0-R to MAIN would be candidates for automated merging. The remaining merges would be left to humans.<o:p></o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'>Personal development sandbox branches aren’t shown to avoid clutter. If sandboxes are used, allow developers to automate merges from development branches to their personal sandboxes.<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Times New Roman",serif'><o:p> </o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><strong><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'>Where does automation breakdown?<o:p></o:p></span></strong></p> <p class=MsoNormal><span style='font-family:"Times New Roman",serif'><o:p> </o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'>Focusing automation only on paths likely to produce a good result is one way to help prevent merge automation from leading to chaos. But even when automated merging is helpful, there will still be some merges that just can’t be automated.<o:p></o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'>For example, an interactive resolve is necessary whenever there are conflicting chunks of text modified in the same file in both the source and target branches. Such merges require human interaction to resolve.<o:p></o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'><o:p> </o:p></span></p> <p style='margin-top:.1pt;margin-right:0in;margin-bottom:.1pt;margin-left:0in'><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif'>Advanced integration options are required scenarios where Perforce isn’t sure if a change should be propagated. For example, if a change is made to a file in the source branch, but the corresponding file in the target branch has already been deleted (or vice-versa), a human with an understanding of the history must determine the appropriate course of action. For these scenarios, a human should use the Revision Graph, Time Lapse view, and even the old fashioned telephone. Then resolve manually based on the results of analysis of the history, and possibly communication with others. The correct choice might be to supply the advanced integration option to Perforce, and proceed with the integration. Or it might be to modify the branch spec, adding an exclusion mapping telling Perforce to ignore further changes to certain files (such as those already deleted in the target branch but which need to exist in the source branch for some reason). [See the Perforce KB article, ‘</span><a href="http://kb.perforce.com/UserTasks/CodelinesAndBranching/PropagatingDeletes"><span style='font-size:12.0pt;mso-bidi-font-size:10.0pt;font-family:"Times New Roman",serif; color:windowtext;text-decoration:none;text-underline:none'>Preventing the Propagation of Deletes</span></a><span style='font-size:12.0pt;mso-bidi-font-size: 10.0pt;font-family:"Times New Roman",serif'>’].<o:p></o:p></span></p> <p class=MsoNormal><span style='font-family:"Times New Roman",serif'><o:p> </o:p></span></p> </div> </body> </html>
# | Change | User | Description | Committed | |
---|---|---|---|---|---|
#1 | 30554 | C. Thomas Tyler |
A few refresher changes: * Updated copyrights for this project (2011 to 2024). * Fixed various doc typos and broken email links. * Tweaked comments in code to refer to modern SDP location for password files and to use /p4/common/site/automerge as the home directory, following the modern SDP covention using the 'site' directory. * Fixed a broken link to the long-gone blog article "Living on the Edge - Automatic Merging" by adding the article in the new 'docs' folder (adding the original Word doc and converting to HTML). No functional changes. |