tag:blogger.com,1999:blog-75033533451811234692024-03-12T23:54:10.538-07:00Mike's Technology and Finance BlogMike's Technology and Finance Blog covers a number of different topics in finance and technology. Most technical posts provide architecture, development, implementation, troubleshooting techniques for different Enterprise IT systems that run on the Windows, UNIX, and Linux platforms. Some posts also include my personal opinions and rants.Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.comBlogger149125tag:blogger.com,1999:blog-7503353345181123469.post-64672055331484503222016-03-17T17:06:00.000-07:002019-09-26T12:57:09.410-07:00The lolcat Statistical Package - Public Release<div class="fluid-row" id="header">
<h1 class="title">
The lolcat Statistical Package - Public Release</h1>
<h4 class="author">
<i>Mike Burr</i></h4>
</div>
<div class="section level2" id="background-and-project-goals">
<h2>
Background and Project Goals</h2>
The world needs a statistical tool that is valuable both for teachers and practitioners. Many of the statistical tools in use today are highly expensive, proprietary, and carry a large amount of baggage. Many tools can’t be reasonably automated. Tools that can be automated (often written in R, Python, Java, and other languages) are incomplete from both a teaching and working standpoint.<br />
The main objective of this project is to provide a tool set that is accurate, reliable, efficient (for the end user), and provides enough additional functionality to be valuable above and beyond many of the commercial tools in existence today. Ideally, users of this tool should not need to be proficient developers. In fact, using the code samples included in the online package documentation along with a couple of small sections of my tutorial on R, practitioners and students (at all levels) should not really need to know much at all in terms of R.<br />
You’ll find something useful in this package regardless of whether you are a student just starting your journey or an experienced practitioner analyzing large amounts of data.</div>
<div class="section level2" id="cost-to-use-the-package">
<h2>
Cost to Use the Package</h2>
The public release of the package itself is offered free of charge and is open source. You are free to take it and modify it any way that you choose.<br />
The online documentation is not included under the open source license and may not be redistributed or stored without express written consent; however it is free to access online anytime.<br />
See the LICENSE file in the package or on github for more details on the license.<br />
<br /></div>
<div class="section level2" id="where-to-obtain-the-package-source">
<h2>
Where to Obtain the Package Source</h2>
If you want to browse the package source, see the official location:<br />
<a href="https://mikeburr.visualstudio.com/DefaultCollection/lolcat-public/_git/lolcat" target="_blank">https://mikeburr.visualstudio.com/DefaultCollection/lolcat-public/_git/lolcat</a></div>
<div class="section level2" id="installing-the-package">
<h2>
Installing the Package</h2>
Make sure that you have the following installed:<br />
<ul>
<li>R</li>
<li>RStudio</li>
</ul>
The easiest way to install the latest package version is to use devtools and run the following R script:<br />
<pre class="r"><code># Install the devtools package
install.packages("devtools")
# Load the devtools package
require(devtools)
# Download the latest lolcat public release
install_git("https://mikeburr.visualstudio.com/DefaultCollection/lolcat-public/_git/lolcat")
# Load the lolcat package
require(lolcat)</code></pre>
If the package is successfully loaded, you will likely see something like this:<br />
<pre class="r"><code>> require(lolcat)
Loading required package: lolcat
></code></pre>
<div class="section level3" id="notes-for-system-administrators-most-people-can-skip-this">
<h3>
Notes for System Administrators (Most People Can Skip This)</h3>
System administrators seeking to install the package system wide (o.e. for all users) should install the package in the “site” package directory or use a network location for shared packages.<br />
<ul>
<li>Windows: C:Files-{version}</li>
<li>Linux: Varies…
<ul>
<li>On the latest Fedora Core Release, the site package directory is /usr/lib64/R/library/. I’d expect this to be the same for other Redhat/CentOS variants using yum/dnf for package management.</li>
<li>On the latest Ubuntu release, the site package directory is /usr/lib/R/library/. I’d expect the same for other Debian/Ubuntu variants using apt for package management.</li>
<li>If you build R yourself or use a non-standard distribution, you’re your own best hope to locate the site package directory.</li>
</ul>
</li>
<li>Mac OS: Someone will have to tell me…</li>
</ul>
</div>
</div>
<div class="section level2" id="resources-for-teaching-with-r-and-lolcat">
<h2>
Resources for Teaching with R and lolcat</h2>
TODO</div>
<div class="section level2" id="resources-for-learning-r-and-lolcat">
<h2>
Resources for Learning R and lolcat</h2>
TODO</div>
<div class="section level2" id="a-z-function-documentation">
<h2>
A-Z Function Documentation</h2>
TODO</div>
Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com0tag:blogger.com,1999:blog-7503353345181123469.post-30938951074301869662015-06-15T13:51:00.002-07:002015-06-15T13:52:47.490-07:00Numeric Operators in R<div class="section level1" id="numeric-operators-in-r">
<h1>
Numeric Operators in R</h1>
<h4 class="author">
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Part of Mike's Big Data, Data Mining, and Analytics Tutorial</a> </h4>
<br />
<br />
R provides a number of operators for performing mathematical operations on numbers and vectors. Unlike most other programming languages, R can seamlessly take objects of different forms (single numbers, vectors, arrays) and perform operations with them.<br />
In the case when two inputs have different lengths, R will “recycle” elements from the shorter input by repeating the shorter input to get the correct length. This is best demonstrated by example:<br />
<pre class="r"><code>a<-rep(1,10) # 1 1 1 1 1 1 1 1 1 1
b<-1:3 # 1 2 3
#b treated as# 1 2 3 1 2 3 1 2 3 1
#Note the warning...
a+b # 2 3 4 2 3 4 2 3 4 2</code></pre>
<pre><code>## Warning in a + b: longer object length is not a multiple of shorter object
## length</code></pre>
<pre><code>## [1] 2 3 4 2 3 4 2 3 4 2</code></pre>
In general, I think recycling elements makes understanding R code harder, and I would generally treat it as an antipattern in R (i.e. don’t do it…). In addition to making code harder to understand, it will also help you start a bad habit of ignoring errors and warnings in R. There are better methods (<code>rep</code>,<code>expand.grid</code>,<code>combn</code>, etc) that preserve code readability if you (or someone else) needs to do any review/modification in the future.<br />
Like most other programming languages, R operators follow a precedence that is similar to the precidence taught to math students (i.e. parentheses first, then multiply/divide, then addition/subtraction). I will cover this section discussing the most common operators and precedence from high to low (see <code>?Syntax</code> for the full list).<br />
<div class="section level2" id="exponentiation">
<h2>
<code>^</code> Exponentiation</h2>
An exponent can be defined as one number (the base) multiplied by itself a number of times (the exponent). Here <code>4</code> is the exponent and <code>2</code> is the base:<br />
<span class="math">\[ 2^4 = 2 \cdot 2 \cdot 2 \cdot 2 = 16 \]</span><br />
In the case of a non-whole exponent, exponentiation works as an nth root operation. For example:<br />
<span class="math">\[ 8^{\bar{.3}} = 8^{\frac{1}{3}} = \sqrt[3]{8^1} = \sqrt[3]{8} = 2 \]</span><br />
Negative exponents work as division operations. For example:<br />
<span class="math">\[ 2^{-3} = \frac{1}{2^3} = \frac {1}{8} = 0.125 \]</span><br />
R accomplishes exponentiation via the <code>^</code> operator. A few examples:<br />
<pre class="r"><code>2^3#Exponent of a single number</code></pre>
<pre><code>## [1] 8</code></pre>
<pre class="r"><code>(1:10)^2#Exponent over an entire vector</code></pre>
<pre><code>## [1] 1 4 9 16 25 36 49 64 81 100</code></pre>
<pre class="r"><code>c(4,9,16,25,36)^(1/2)#nth root operation</code></pre>
<pre><code>## [1] 2 3 4 5 6</code></pre>
</div>
<div class="section level2" id="multiplication-and-division-operators">
<h2>
<code>*</code> Multiplication and <code>/</code> Division Operators</h2>
Multiplication can be defined as the repeated addition of a number. Example:<br />
<span class="math">\[ 5 * 3 = 5 + 5 + 5 = 15 \]</span><br />
Division can be defined in terms of splitting a quantity (called the numerator) between a set of groups (denominator). Example: 20 split between 5 groups yields 4 for each of the 5 groups:<br />
<span class="math">\[ 20 / 5 = 4 \]</span><br />
Various rules exist and are taught in low level mathematics courses for finding multiplication and subtraction for non-whole numbers by hand.<br />
R accomplishes multiplication with the <code>*</code> operator. A few examples:<br />
<pre class="r"><code>2*2 #Multiplication of two numbers</code></pre>
<pre><code>## [1] 4</code></pre>
<pre class="r"><code>(1:5)*rep(2,5) #Multiplication of vectors</code></pre>
<pre><code>## [1] 2 4 6 8 10</code></pre>
<pre class="r"><code>c(1,2,3,4,5)*c(2,2,2,2,2) #Same as above</code></pre>
<pre><code>## [1] 2 4 6 8 10</code></pre>
<pre class="r"><code>(1:5)*2 #Multiplication of a vector by a number (all elements multiplied)</code></pre>
<pre><code>## [1] 2 4 6 8 10</code></pre>
The vector example above illustrated (O are input, X are output):<br />
<img alt="" src="data:image/png;base64,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" title="" width="672" /><br />
R accomplishes division with the <code>/</code> operator. A few examples:<br />
<pre class="r"><code>4/2 #Division of two numbers</code></pre>
<pre><code>## [1] 2</code></pre>
<pre class="r"><code>seq(2,10,by=2)/rep(2,5)#Division of vectors</code></pre>
<pre><code>## [1] 1 2 3 4 5</code></pre>
<pre class="r"><code>c(2,4,6,8,10)/c(2,2,2,2,2) #Same as above</code></pre>
<pre><code>## [1] 1 2 3 4 5</code></pre>
<pre class="r"><code>seq(2,10,by=2)/2 #Division of a vector by a number (all elements divided by number)</code></pre>
<pre><code>## [1] 1 2 3 4 5</code></pre>
The vector example above illustrated (O are input, X are output):<br />
<img alt="" src="data:image/png;base64,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/PWP1+++pIAex4G+Jn/en3ZqGkg/s5WPA/X7t/ydHy5ZUkBPI+jTzfj9pwR07aeyNedyrrega/79W/6HPZXzVNB0HfS4TupiIvNKzoVf8Troen//75Z/yvIvK6DHI0evrRt2nxHQVWs1c50BhbEWFtCPElBgPgIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAtr19HTuDwAtAtr1lETzSUCB8wS0p6mmfgKXCGhf1U39BC4S0AFFOfUTuExAhxzbqZ/AFQI66OlJP4FrBHSYfgJXCegga6DAdQI6xD5QYAQBHeAoPDCGgPYZBwqMIqA9zkQCxhHQLufCAyMJaJerMQEjCShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQtL6DbTeV5+oMFFJjPwgK627RNbaiAAvNZVEB/vmy6/vhr0jMIKDCfJQX09492MX99P/z5299TnkJAgfksKaD7Xi6PSX2b8hQCCsxnSQHd9jfYDyuhk3aDCigwnwUF9LC6+dq7cTdtG15AgfksKKCHtc3+5vr+0mGk3iGnjYAC8xFQgKAFBdQmPHBfFhRQB5GA+7KkgA4PY+qvlV4goMB8lhTQwYH0005FElBgPksKaFHMti9/TnoGAQXms6iAppdicjERILeFBfTd5eyAu7G8gH6IgALzEVCAIAEFCBJQgCABBQgSUIAgAQUIElCAIAEFCBJQgCABBQgSUIAgAQUIElCAoNUFFGA+szdq7iecU+4XG3gsszdq7ifMYu3b+pY/9xzkZfnzTTrblOfkDZR7DvKy/LnnIC8B/SBvoNxzkJflzz0HeQnoB3kD5Z6DvCx/7jnIS0A/yBso9xzkZflzz0FeAvpB3kC55yAvy597DvIS0A/yBso9B3lZ/txzkJeAfpA3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" title="" width="672" /><br />
The input objects need to be numeric to utilize numeric operators. An example is that lists can’t be multiplied/divided directly:<br />
<pre class="r"><code>list(x=2,y=3) * list(y=2,x=3) #Might yield list(x=6,y=6)? Nope...</code></pre>
<pre><code>## Error in list(x = 2, y = 3) * list(y = 2, x = 3): non-numeric argument to binary operator</code></pre>
Matrix multiplication uses a different operator (<code>%*%</code>). See the post on Matrix operations for more details.</div>
<div class="section level2" id="addition-and---subtraction-operators">
<h2>
<code>+</code> Addition and <code>-</code> Subtraction Operators</h2>
Addition can be thought of as finding the magnitude of two combined quantities.<br />
<span class="math">\[ 1 + 1 = 2 \]</span><br />
Subtraction can generally be thought of as finding the difference between two values.<br />
<span class="math">\[ 2 - 1 = 1 \]</span><br />
R accomplishes addition with the <code>+</code> operator. A few examples:<br />
<pre class="r"><code>+5 #Unary addition operator - no change/effect</code></pre>
<pre><code>## [1] 5</code></pre>
<pre class="r"><code>2+10 #Addition of 2 numbers</code></pre>
<pre><code>## [1] 12</code></pre>
<pre class="r"><code>1:10+2 #Addition of number and vector</code></pre>
<pre><code>## [1] 3 4 5 6 7 8 9 10 11 12</code></pre>
<pre class="r"><code>1:10+11:20#Addition of 2 vectors</code></pre>
<pre><code>## [1] 12 14 16 18 20 22 24 26 28 30</code></pre>
The vector example above illustrated (O are input, X are output):<br />
<img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABUAAAAPACAMAAADDuCPrAAAAh1BMVEUAAAAAADoAAGYAAP8AOjoAOmYAOpAAZAAAZmYAZpAAZrY6AAA6OgA6Ojo6ZmY6kJA6kNtmAABmAGZmOgBmZjpmZmZmtrZmtv+QOgCQkDqQkNuQ29uQ2/+2ZgC2kDq225C2/7a2///bkDrbtmbb25Db/7bb/9vb////tmb/25D//7b//9v///97f/ZGAAAACXBIWXMAAB2HAAAdhwGP5fFlAAAgAElEQVR4nO3d64KbSLuYUXl24s7X3knaOdnJHmVnlMPIdt//9UUIIRUCteFtGihqrT9jayQQfXjMoSjtXgEI2S39BgByJaAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoNv36/vu5I+/kod+fq0e+vz32EUdX973Vva72rc3n/D8xsPnd/7pz847un88ov6qtHXfyweZYgOYnYAW4NCJ1vH8yNga/vgy+iVt10I9TPfIgN7ekYCyBAEtwCkzdyk4B2nkb+t5R/Z9AT02WXq46lEBTd+RgLIEAS1A5xi+LsXINuwjO6097+PNnd9RAU3fkYCyBAEtwf0xfL1L+vBEZL/3B/S82k///NYx/G8DOu07alu0YQKaJQEtwf0x/OFuj3SQ9+fqvNrP//utY3gBJSsCWoK7Y/j6r2MPTt+dq3q1L/WB8oMFCShZEdAitI/h747gL6f+Xvpe0lTrevkneeHllGayJ3uol3PoD1t9BP9n3b32Mfz1HbVL2fPwtTN37+i+P903d7y8q8dDuB40rH7B5fFD62t1+SLdNnZ/eWb6Ba+34vqUw+X/3J1XuVt5/zeFtRHQIrR/hw9pQZIrJ8ku3mHXfrQb0HqRu6QtTUD37c62l3la7bH1mvQt/PFXGtDeh4cFtO/N1QG9bW63TY92AutVnb9g9YIvX7vki9QsrQ7o9X+cnnhdYbPgOqDXt98kvrXy/m8K6yOgRaj3xy6/95dD6fr/JKm5RTW5XH55tBPQNB7XhZ0f/PftMNy9h5fuGIC0dv98+1/9Dw8KaO+bO7/gP3zpPH7z8Ch63zy/3obWzmh7afvru7187f7PbYWXr8j5Zf/19pTL0tKV935TWCMBLUO619ccSlfuRu5cqrZvPVi14T6gx13nKa+9u2Q3t9Xuk5zc1/r6Lh48PCSg/W/u/tFu4nuGMT0nb/H0/PQGhFblmqXtO0vovI/D/cP1K5MN6P+msEYCWob0yk16BL9vApT8KTlkrSORtCEddVn/rX5y/ZuftKG7I3db7fG2quuLquc3zXx+4+EB40AfvLnj7Y1d2nd/kuFhQJthDK3Tp9d/BtJzpPvby5ovRvWU5CRA83j1/PREZ7IBvd8UVklAC3G7cpMewac5OlyDkVzlSU6eprlK72RKjsjbF57aktW2juFbIwT219c/eHhIQB+8uTRi7YQ3Hge055+GZIXJRbnrwf71z0k16605JA8nW3lbXv83hVUS0ELcjuHTI/hj8vt5/r297lE1e5D765Fukqv2SKTbotM2PH4D7WP41pCA24DVBw8PCOijN5dGs38o1RsB7buJ6vTYc/K6W0DTk52XFR7vA9rasm+tDej9prBOAlqIWzLSnZo0QedGXM8udn9pk+e2n3Hbt+zOWnL38ktb05a1lnUbofrg4QEBffTm0oK3rqO1v0YPhmJez3j2/PNwH9D0In36z0RynqO9ZS+tlfd+U1gnAS1F86td/8rW8epeqKn+x7G/E8nv9aH9jOsgo8Pu4a97a58vPYZvL6u9qO7DAwL66M2lYR0f0PTUZd8XJg1oOnb2QUDbW9YKaP83hXUS0FI0v87pQWHP7+pLp0CN+4De3Rl6rV7/AWd78GdypNteW3tR3YeHBrTnzbX2THtvYnozoJevVfs16RX1/oBeNuE+oNf3d33BWwE1nH61BLQUzXFmeobtQwLafwq0b3zPy2vnNR8d0GaJ4wN6OYZP53Jub42AlkhAi3H5Vd1ff9kfHcm+8xC+N6B9M8UlY5q6x+oPHn7vIXw4oNestd/T+YH7c6ADAvrbQ3jNzIOAFqM+hP1fX3t/fbtP/Ov6l2+d5/Zdp6me9TignVHsu13fNZ+Puoh0HfsfDujtYD29sSkdeDoqoEMvIrFyAlqM+tf8v7Z+O3uLl/Qgvaw8dBhTb0D779B5uV/bbbzSg4ffO4wpGtDuzfWdL8eogLa27G705xsnQlgbAS3H/i4Br+1JRo7tYfL1b3BSo6ED6R/Oc5QOCL/d05OOmL8cJ98PpE8efu9A+mBAL+/mX29TiaQH2kkSBwc03bLzc24r7/+msEoCWo6+oYy3e3ySG3WO11/xzl2KaQ8e3MrZF9DunT+3yt0W0JwoTW4c6jzcCehldZ0bg/pv5QwGtEnkbTK7S9Rv91uODGh6vaj/Vs67bwqrJKDluF4HScJxNyPGpXHdyURek7OAL6/t8Tu31z0KaM8HKyfTcnQO75/73kRPQNN31Pt4680NDOidZJ/wuTUbU2dOkNu2DAroTbKv3/oX4O79s0YCWpDLr25PyFoR6JvO7jX5tX5JltV+3aOAdj8WNJ3WOO3Webq59AbJ+4d7Z327C+gb09mFApr0/zYfaPrkf3N9e0MD+m//c2sNdxvW+01hjQS0IJfgtOemSENw29W5n1C5sm898HBC5Z6A9t3imUw0dOv1y49bQPsfvrtR//qOBk6oHApoOkPI7SD+to5vt5sTBg9j+n/Nxv1uQmX7n6smoAVJztulLr+tdyf/LglNI1Mn4/q8Bx/p0Q1ozxF8s5fVmnz++bKKa7J7Hu4L5fVEabIJDz7SIxLQ1onI9Gt4Ow2xb/1h2DjQdFKXzoY9+KawNgIKszJKaUsEFGYloFsioDArAd0SAYVZCeiWCCjMSkC3REBhVgK6JQIKsxLQLRFQmJWAbomAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgStO6A7gMlMn6jJlzihpb/awLZM3qipFzilD/gHAyiWgAIECShAkIACBOUX0P317O3z+BcLKDCdzAJ6uLsCNrahAgpMJ6uA/vjSGUPwx1+jliCgwHRyCuiv7+1i/vx6+vvnv8csQkCB6eQU0GMnl1VSv41ZhIAC08kpoPvuAftpJ3TUaVABBaaTUUBPu5svnQcP447hBRSYTkYBPe1tdg/Xj+MuIwkoMB0BBQjKKKAO4YF1ySigLiIBH+zp6dFfeuUU0P5hTN290jcIKPCGpySaT9sKaO9A+nG3Igko8JZbNQf0M6uA1sVs+/TnqCUIKPCmpptD+plXQNOpmEwmAnyEupyD+plbQF9NZwd8rKqdw/qZYUBHmOMjoICteXoa2E8BBbgztJ/ZBvR8RX7cEKaKgAK/tdWAHi8zgB5j8ykLKPBbGz2Er3c7d5/+vE1Nb0Z6YFpbvYjUXID//D8v5dybkR6Y1laHMZ32O6tsnj9Y7tLNoxnpgSltdiD94XLAvr/dgHQ6qDeZCDCZzd7KeZ3O7rQnej1wN50dMJ3tTiZynVA53e00oTIwne1OZ3ebkX4voMAK5BXQy8D5fXoIL6DAQjIK6OnIvXu+c+8iErCUjAJajV+6H7N0NCM9sJicAlrNp/x8/4AZ6YGl5BTQ+g74207ovv3XIQQUmE5WAa0KmnyGx2F0PwUUmFBeAT3tdSaH7Ifxc9ILKDCd3AL6TgIKTEdAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFFirkR8yPD8BBdbqKYnmk4AuTkAhJ7dqrrKfAgqsWNPNdfZTQIE1q8u50n4KKLBqVTvX2k8BBdbt6Wm1/RRQYOXW208BBdbNHuhqCChkxjnQ9RBQyIur8CsioJAV40DXREAhJ+5EWhUBhYy4F35dBBQyYjamdRFQYDoCChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKDAMO3PFV7jpwzPTkCBYZ7SZj4J6KuAAoMl0dTPMwEFhrpmUz9rAgoMdgmnfl4IKDDcOZ362RBQYISns6XfxVoIKDCGfiYEFBhDQBOZBvTn193J57/Hvk5A4X0cwqcyCugpmk0x97uL55HLEFB4FxeRWrIM6LWfo3dCBRTewzCmthwDejyF8+XyyMh9UAGFdzCQ/k6GAT3994+/Lo8ddp/+HLMMAYU4t3LeyzCgx8v+Z+XX93G7oAIKYSYT6cgwoK29zsO4s6ACCmGms+vIMKD7NKDH2+H8EAIKTCfLgCbNFFBgMRkG9GAPFFiFDAN63O2+XR/cOwcKLCXDgKZX3tMr8kMIKDCdvAK6Ow+hv1bzlNJxR/ACCkwov4CenbN5vqPz229flxJQYDoZBfQ1aeg5oIfR/RRQYEJ5BbT240tzOX7sZEwCCkwox4AOtuux9HsCtkNAAYI2HdAuAQWmk1lAf3xpT6L867s7kYCl5BXQZir668UjAQWWk1VAbx/l0eyECiiwnJwCWh2/V+M+D7eCCiiwnJwCep0ItLqFsy6ogALLySig6SQi+911YhEBBRaSUUB/fm1NY3cuqIACy8k1oFVBnwUUWFK2Aa3Og74IKLCgjAJ69xHGVUG/CSiwnIwCWg1fSmev+/Fl9+lfBJRS+ZDhFcgpoNU40PQDPI63qUGHElA24ylt5pOALiKngJ5H0KeH8UcBpWBJNPVzIVkF9FzQdB+02icVUEp1zaZ+LiWvgFZXjtqfwnkQUMp1Cad+LiazgL6XgLIp53Tq53IEFDL2dLb0uyiXgELO9HNRAgoZswe6LAGFfDkHujABhWy5Cr80AYVcGQe6OAGFTLkTaXkCCnlyL/wKCCjkyWxMKyCgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAwidbnCvuQ4UIIKEziKYnmk4AWQkBhGrdq6mcxBBQm0nRTP8shoDCVupz6WRABhclU7dTPkggoTOfpST+LIqAwIf0si4DCdOyBFkZAYTLOgZZGQGEqrsIXR0BhIsaBlkdAYRruRCqQgMIk3AtfIgGFSZiNqUQCChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChCUX0D3u8bz+BcLKDCdzAJ62LWNbaiAAtPJKqA/vuzu/fHXqCUIKDCdnAL663u7mD+/nv7++e8xixBQYDo5BfTYyWWV1G9jFiGgwHRyCui+e8B+2gkddRpUQIHpZBTQ0+7mS+fBw7hjeAEFppNRQE97m93D9eO4y0gCCkxHQAGCMgqoQ3iG8yHDzCGjgLqIxHBPSTSfBJQR/uliyHNzCmj/MKbuXukbBLQYt2rqJ2P80z+NKGhOAe0dSD/uViQBLUfTTf1kjGs4BxU0p4DWxWz79OeoJQhoQepy6idjJNncXEDTqZhMJsLvVO3UT0ZJqzmgoJkF9NV0dgz39KSfjLP5gI7QOeDfCWhZ9JORBPRGQEsnoIwkoG8R0KI4hGesbQf0PKVyMhj013e3cvKIi0iMtumANheQrpePBJSHDGNivC0PY7pdgG92QgWURwykJ2K7A+mr4/dqPqbDraACygNu5SRms7dy7pv7jqp7OuuCCij9TCZC1EYnEznF8nruc38pqIDSz3R2zCGjgLYmVL4UVECB5eQa0KqgzwIKLCnbgNZTgQoosJyMApqeA329fCa8gMK2jbmkM7+MAloNX0o/Ve7Hl92nfxFQ2LJRg4rml1NAq3Gg6Qd4HM9j6gUUNmvcsPb55RTQ8wj69DD+KKCwZSNvrJxfVgE9FzTdB632SQUUtmrk1B7zyyug3c+GPwgobJaArouAQkYEdF0EFDIioOsioJARAV0XAYWMCOi6CChkxDCmdRFQyImB9KsioJAVt3KuiYBCXlbdTwEFiBJQgCABBQgSUIAgAQUIElBm4EOGt2Ld18TnJ6DM4CmJ5pOA5mvlozLnJ6DM4VZN/czY2u8Lmp+AMoumm/qZsdXfmT4/AWUedTn1M2ernxtpfgLKTKp26mfWBLRDQJnL05N+5k1AOwSU2ehn5gS0Q0CZiz3Q3Aloh4AyE+dAsyegHQLKPFyFz59hTB0CyiyMA90CA+nvCShzcCfSNriV846AMgP3wm+FfrYJKDMwGxPbJKAAQQIKECSgAEECChAkoJAvF8UXJqCQLcMylyagkCs3Bi1OQCFTbk1fnoBCpkyOtDwBhUwJ6PIEFDIloMubLaA/v+52n/58PXz+e+oVjiGgbIeALm+mgFb5rAO6232beo0jCCjbIaDLmyegdT+rgO53ixZUQNkOAV3eLAH99X23+/z3jy+ngFYF/eOvqdc5mICyHYYxLW+WgB53u5fX1zqg1UH8y9TrHExA2RAD6Rc3S0D3u+rS0SWgp93R5S4kCShb4lbOpc0R0FMyq33OS0BPu6DLHcMLKJuinwubI6A/v56vGzUBPQoosAkCChC0wCH83jlQYBNmuohU7XNeAnraH32eep2DCSgwnbmGMT03Aa3GhC43kl5AK+3PFfYpwxA1z51I59Hz54AedrsFj+AF9OwpbeaTgE7GNfHizHorZ23BG5EEtJZEUz+nY1RmeWaaTKQ6cF9BPwX04ppN/ZyO+4IKNNt0dpeELppPAb26hFM/p+PO9BKZULlQ53Tq54TMjVQiAS3V09nS72JDBLREAlos/ZyWgJZopls529zKuQYCOi0BLVGmAa0XOX5AqYBeOYSfmICWKKOAnhbTFHPfLGnsTaEC2nARaWoCWqK5z4G+YzrlW0D3txaPXJiAXhjGNDnDmEo0/0WkQ7Sg14Aed5dPBal2bcftgwpozUD6D2AgfYHmD+hpHzQ2mUgT0NN/r+cADrt6irzBb05AK27l/BBu5SzPAsOYorugTUCPyafSnWo8ahdUQCsmE/kg+lmcRQL6votIrb3OkTUW0Irp7GAaGQZ0nwZ05OeDCCgwnfkDmoxGGucW0KSZAgosZvaAjr9ynryyewgvoMBilhhIP+7CebqY5iLS7TL+yE+oE9CCuKTDh1sioC89rxqgCWh65f04cmkCWg6Divh48wc0fCP8ZTEvt2pWkzSPW5yAFsOwdmaQ0XR2aYfP2Tzf0TluUL6AlsKNlcwho4C+Jg09B/Qwup8CWgxTezCHvAJa+/GluRw/+nK+gJZCQJlDjgEdbNdj6ffEPASUOXxsQDszgU41ofLAtyKgxRJQ5rDpgPa8OQEthIAyBwFlkwSUOWz6HGiXgJbCMCbmIKBsk4H0zEBA2Si3cvLxlgjoz/8UnQ/03SdUBbQg+smHmymgxwkuIgkosC7zBHT/jubd/PgioMCKzBLQ+/LFPpWz3gcNzoXXvDkBBSYzS0D350no61vX9/F+ngsanI35QkCB6cwR0F/fz5N/HJs5lN4xjr6ZRyT85gQUmMxMEypXB94/vpz3Hk85je+CVlPYvePVqwxoIR8y7Jo4GzRTQL/d/hOZha61rPfsgq4zoE8P/rIlRmWyRTMG9LTreb4C9OPLexL4vl3QNQY0jeaW+3n3B9iAGQP6uq93PX98MZlI2zWb2++nO9PZlJkuIp13PQ/NxxIL6J1LODfbT3MjsVGzDGO6XHg/1mOQDu+7kP4uKw1onc7t9lNA2ai5BtJX6azHIB1377mI9E5rDWgVzw33U0DZqPlu5Xy53dH5noFI77PagL5uup8CykbNE9Bf38/VvEwHstwO6HoDag8UMjTXdHbH+hbMy67oYtYaUOdAIUcmVF6DAq7CG8bEFgnoCmx/HKiB9GzTPAPplzxqb1llQEu4E8mtnGzSTHciLXnlPbXGgJZxL7zJRNii2QK6e+dMntNYZ0Af/w1Ys3nOgTZT0i93D+fFGgMK5Gq2i0jNx8otdxtnRUCB6cx5Ff5waaiB9MAmzDyM6bDwkbyAAtOZfxzoUUBXwDVxmMDMAd3bA10FozJhCnMGtJmMacFh9QJ65r4gmMRsAV3BFaRXAa25Mx2mMU9AD6sYw/QqoDVzI8E0ZrwTafFR9K8CWhNQmMZcAV3DfZyvAloTUJjGPAFdx0wirwJaE1CYhvlACySgMA0BLZCAwjQEtECGMcE0BLREBtLDJAS0SG7lhCkIaJn0EyYgoABBAgoQJKAAQQIKECSg91qfKzzXhwy7pgM5EtB7T0k0n2YKqFFFkCUB7bhVc8Z+3v0ByIGAdjXdnL2f7qyEvAhoj7qcc/XT3B6QKwHtU7Vztn4KKORKQHs9Pc3XTwGFXAlovxn7KaCQKwHtJ6DAbwloL4fwwO8JaJ+5LyIZxgRZEtAeMw9jMpAeMiWgXXMPpHcrJ2RKQDvmv5XTZCKQJwG9t8RkIkCWBPTeItPZATkSUIAgAQUIElCAIAHt4Zo4MISAdhmVCQwioB3uCwKGEdB77kwHBhLQe+ZGAgYS0HsCCgwkoPcEFBhIQO8JKDCQgN4TUGCg/AK63zWex79YQIHpZBbQw65tbEMNYwKmk1VAf3zZ3fvjr1FLMJAemE5OAf31vV3Mn19Pf//895hFuJUTmE5OAT12clkl9duYRZhMBJhOTgHddw/YTzuho06Dms4OmE5GAT3tbr50HjyMO4YXUGA6GQX0tLfZPVw/jruMJKDAdAQUICijgDqEB9Ylo4C6iAR8vDGjcHIKaP8wpu5e6RsEFHjTqHHgOQW0dyD9uFuRBBR4y7g7EXMKaF3Mtk9/jlqCgAJvGDkXRlYBTadi+rDJRIByjZyNLbOAvn78dHZAuTYf0BE6B/w7AQXeIKA3AgqMIqBvEVDgDQL6FgEF3iCgbxFQ4A3bHsb0XgIKvGXDA+nfT0CBN231Vs6e+5BGf6ycgAJv2+hkIgIKrEtGAe37VGMBBZaTU0DP+6CjZq/rEFBgOlkFtCroyOmX7ggoMJ28AlodxY/6CI97AgpMJ7OAvh52PZ8sN5yAQl7GXBOfX24BPR3Ev2cXVEAhK6NGZc4vt4C+cxdUQCEn4+4Lml92AX0fAYWMjLwzfX4CCqzVyLmR5iegwFoJ6LoIKGREQNdFQCEjArouAgoZEdB1EVDIiICui4BCRgxjWhcBhZwYSL8qAgpZcSvnmggo5GXV/RRQgCgBBQgSUIAgAQUIElBgsHVf0pmfgAJDrXxQ0fwEFBho7cPa5yegwDCrv7FyfgIKDLP6qT3mJ6DAMALaIaDAMALaIaDAMALaIaDAMALaIaDAMALaIaDAMIYxdQgoMJCB9PcEFBjKrZx3BBQYTD/bBBQgSEABggQUIEhAAYIEFCBIQCFfLoovTEAhW4ZlLk1AIVduDFqcgEKm3Jq+PAGFTJkcaXkCCpkS0OUJKGRKQJcnoJApAV2egEKmBHR5AgqZEtDlCShkyjCm5Qko5MpA+sUJKGTLrZxLE1DIl34uTEABggQUIEhAAYIEFCBIQAGCBBSm4pp4cQQUJmJUZnkEFKbhvqACCShMwp3pJRJQmIS5kUokoDAJAS2RgMIkBLREAgqTENASCShMQkBLJKAwCQEtkYDCJAxjKpGAwjQMpC+QgMJE3MpZHgGFqehncQQUIEhAAYIEFCBIQAGCMg3oz6+7k89/j32dgALTySigp2g2xdzvLp5HLkNAC+KaOB8uy4Be+zl6J1RAy2FUJh8vx4AeT+F8uTwych9UQIvhviBmkGFAT//946/LY4fdpz/HLENAS+HOdOaQYUCPl/3Pyq/v43ZBBbQU5kZiDhkGtLXXeRh3FlRASyGgzCHDgO7TgB5vh/M9b6XHR7071kVAmUOWAU2aKaD0ElDmkGFAD4P3QLsEtBQCyhwyDOhxt/t2fXDvHCh9BJQ5ZBjQ9Mp7ekV+CAEthWFMzCGvgO7OQ+iv1TyldNwRvICWw0B6ZpBfQM/O2Tzf0fntt69LCWg53MrJx8sooK9JQ88BPYzup4CWRD/5cHkFtPbjS3M5fuxkTAIKTCjHgL6DgALTEVCAIAEFCBJQ5uGSDhskoMzCoCK2SECZg2HtbJKAMgM3VrJNAsoMTO3BNgkoMxBQtklAmYGAsk0CygwElG0SUGYgoGyTgDIDAWWbBJQZGMbENgkoczCQnk0SUGbhVk62SECZh36yQQIKECSgAEECChAkoABBAgoQJKBlck0cJiCgRTIqE6YgoCVyXxBMQkAL5M50mIaAFsjcSDANAS2QgMI0BLRAAgrTENACCShMQ0ALJKAwDQEtkIDCNAS0QIYxwTQEtEQG0sMkBLRIbuWEKQhomfQTJiCgAEECChAkoABBAgoQJKAAQQK6Ci6KQ44EdA0My4QsCegKuDEI8iSgy3NrOmRKQJdnciTIlIAuT0AhUwK6PAGFTAno8gQUMiWgyxNQyJSALk9AIVMCujzDmCBTAroCBtJDngR0DdzKCVkS0FXQT8iRgAIECShAkIACBAkoQJCA9nBJBxhCQLsMKgIGEdAOw9qBYQT0nhsrgYEE9J6pPYCBBPSegAIDCeg9AQUGEtB7AgoMJKD3BBQYSEDvCSgwkIDeM4wJGEhAOwykB4YR0C63cgKDCGgP/QSGEFCAIAEFCBJQgCABBQjKL6D7XeN5/IsFFJhOZgE97NrGNlRAgelkFdAfX3b3/vhr1BIEFJhOTgH99b1dzJ9fT3///PeYRQgoMJ2cAnrs5LJK6rcxix4YK9EAAAscSURBVBBQYDo5BXTfPWA/7YSOOg0qoMB0MgroaXfzpfPgYdwxvIAC08kooKe9ze7h+vGty0idS047AQWmI6AAQRkF1CE8sC4ZBdRFJGBdcgpo/zCm7l7pGwQUmE5OAe0dSD/uViQBBaaTU0DrYrZ9+nPUEgQUmE5WAU2nYjKZCLC0zAL6ajo7YDXyC+i7CCgwHQEFCBJQgCABBQgSUIAgAQUIElCAIAEFCBJQgCABBQgSUIAgAQUIElCAIAEFCCouoADTmbxRUy9wSkt/sYFtmbxRUy+wEAWcXShgE0vYxgI2ccltLOCr+yEK+LEsYBNL2MYCNlFA81PAj2UBm1jCNhawiQKanwJ+LAvYxBK2sYBNFND8FPBjWcAmlrCNBWyigOangB/LAjaxhG0sYBMFND8F/FgWsIklbGMBmyig+Sngx7KATSxhGwvYRAHNTwE/lgVsYgnbWMAmCmh+CvixLGATS9jGAjZRQPNTwI9lAZtYwjYWsIkCmp8CfiwL2MQStrGATRTQ/BTwY1nAJpawjQVsooDmp4AfywI2sYRtLGATBTQ/BfxYFrCJJWxjAZsooPkp4MeygE0sYRsL2EQBzU8BP5YFbGIJ21jAJgpofgr4sSxgE0vYxgI2UUDzU8CPZQGbWMI2FrCJAgqQIQEFCBJQgCABBQgSUIAgAQUIElCAIAEFCBJQgCABBQgSUIAgAQUIElCAIAEFCBJQgCABBQgSUIAgAQUIElCAIAEFCBJQgCABBQgSUIAgAQUIElCAIAEFCBJQgCABDfjxZXfy6c+l38dHO23nt6Xfw0c6Vt/GTW9i/ZP6vPTb+Cg/v/7xV/q3amNf5n0LAjpa/X2qpN+9Dao2dMN1qeOy5W/jr+/NT+o2v42n7Uu+d/vLts67YyOgY936ueFfvbP9Zn/zKtd+7naf/176zXyM/e0ndZPfx336G3hY5rdSQMc6NIcJ+y0fHL1eDnA3+YtXqf4dPIfz+v3cnOPlB7Ta1A3+U3/ev75uV/XvYfX9PM78WymgIyXHtYdN/lw26j3tzQb0cN3xPG51F3Tf/MuwyXMx9RHE9Rdw33Tz9PicB/ECOtLx9g9c9U/g5n4uG9X5pf++3e07bV7za5b8cVv21+06bG4n+/zP+z9u50BPf2/+OO/GCuhI6bdnv93AVNv57bDd7Tvtp2z59MtZK6Ab+0ZWJ16+JReRku/n6Y8zHlEI6DvsN7rr8nr+KXzZ4O/d1XFz+2Rd13/rN7iPfah6mQQ02a9pX5v/aAIadzps2ObJs/MP4WnTNhzQ86bVw3y2uonnw9zn5L+b0w7ot9ujM/5zIaBx2zuzdFXvW284oNUGHpYY9jKn24i7TfYzDWh6Nm3WA0MBDZv3XMusLge42w7ofylgOO9+w6NA7wJ6i6aAZuHUz63+4jXnJrYb0Prg/byRcw8cnNFtIP3WToHWHgZ0xh9bAQ06bnjHZX/ZtI0H9HL+ZeaBg/PZX7ax2thNbqE90HxtuZ/Xbm43oFVcrudfNjoaLfmH4bDNewUENFv7bf5Ent2G1G07oNcLgBsd0tQe2bPFXVBX4TNVHRNt9LTZazorQ22LcWmNoNhoQNMdsW3+U5gE9GgcaD6qu3C3+Bt3UURAkztyBTRX7kTK0mYvOlwUEdB0DMVGz4G2D+G3uIm/3AufodO3atP9TGxzv6V2nb1ns+PRjrv0ItIWNzE9WDcbUyY2+o95ry0HtJk/8jwOdJM72dehWumYrU1JA2o+0Ewc28e3mw1MZcsBTc9UbHRARTLn/jY3sXW5yIz0Wbh9zIyAZu646bhUbvfCb3MTfSZSftJPRBLQzO1n31+Z29207RtzN2DJp3IC5ERAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggSUmF/fd3/89fZTfn7dff77nas57E5uSxmw1jff0f9IFvw8/kWTPpcNEFBiZgnoaSWV5/SBdwR0v3tJ/vxt/IumfC5bIKDEzBLQ47mfSZXeFdBjsqSfXwcuJ33RlM9lEwSUD/P+gB527z8JcJP27Th0wQLKGwSUDzNJQAceaA+R9m3wwbaA8gYB5cOsOKC/vn/6c/SLJn0umyCgxFzORtb/ubtWfipndeUnCWh9MrOO4Y8vl/OYp9feZyx93nkp7VOgj9d6Wuhzs97Xu4Wf/t/pWZfzqfXCf3zpe2dvvWjkCiiDgBKTpOxfv7TTcaj/9vn/NgH90TyhDufh0sTD/Q7bNZnn5/0moO21Vn27rKbO2tt9awYxtdf4u4COWAFlEFBibim7qYNyaP767y4Bvfbz0qlLejpH+Nea1c97O6B3az2t4x/f0wfe7Nvpf37rWeNvAjpiBRRCQIlppaxqxuGSuipKVRjPPan+UD3lnJrqkfOO3/H83/39Afz+soRD87zuOdCHaz1HuvpfzUo6fUtPUTaDmO7X+MaLxq2AQggoMUnKLiMqD3VYrkOPquRcSnrZ0zy1tW5O1c7j7u5eoNPzL0W6/umtgLbX2qzs+uI3+3asV91Z428COnwFFEJAiUlSdolGnZGkK5eUJnuaTWFOJf1HZ0j84VbU5Czpw4C21pq0sNqtfPlN3/bXxbfX+HZAR6yAQggoMbeUtTNyamMTxusD11Od50vZlUPPycL97ZHmeW8E9C5eTcNemxMEb/Xt59dmR/hujW8HdPgKKIWAEvNGQJvQ1H9MLtQ0Z0XrXcjnzgKve6pNkUYF9Pn24t/07TKIqbvGtwM6fAWUQkCJeZSyZE+tDmhyDf4W0GrnrxvQ6zF9U+FoQN9u4WmxL/1rHBzQ36yAUggoMYP3QJOi3hy7h/Dz7YE2g5jsgfJeAkrMmHOgnYmPTq/6t//5vqvJGcnmCv3HnAP98eXyhjprdA6UcQSUmEcpq85u3u5Iaj9wVYWxU5vkmvj+91fhuwFtMn3J4u3ifzOwqlnjsVlPd42PXzRmBRRDQIl5mLLrONBmRP3hOmazKcz5mZ074ceNA+0G9BLDpnTXs6zN+7j27TqXcneNj180ZgUUQ0CJeZiyKifV/zlfPGoeqJO13zWZqv6TnFWspfcF1Q0eF9DrDVDN4f95adc7opoR/c0gpr41PnzRmBVQDgEl5mHKrveE7/7j17sHbsU5F2h/l8f7O9NHBvTftKcsuS3tv7Xuyf+WzKXcWePDF41ZwcRfaVZMQIl5HNAmmD2zMZ37eR099Hg2keaQf9xV+GP7xU23X5r11HfQvxyS4+zOGh+9aMwKpvjykgcBJeaNgNYhac0HWs/QdL0L6eX17k+N1uyco4cxnUOdvKA6Qj897/o+zu/rH+25lO/W+OBFzyNWMPTTPtkAAWUTOidUs1sBORJQNkFAWYKAsgkCyhIElE0QUJYgoGyCgLIEAWUTBJQlCChAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShA0P8HhjuWr333760AAAAASUVORK5CYII=" title="" width="672" /><br />
R accomplishes subtraction with the <code>-</code> operator. A few examples:<br />
<pre class="r"><code>-5 #Unary negation operator - creates a negated quantity</code></pre>
<pre><code>## [1] -5</code></pre>
<pre class="r"><code>12-2 #Subtraction of 2 numbers</code></pre>
<pre><code>## [1] 10</code></pre>
<pre class="r"><code>3:12-2 #Subtraction of number and vector</code></pre>
<pre><code>## [1] 1 2 3 4 5 6 7 8 9 10</code></pre>
<pre class="r"><code>11:20-1:10#Subtraction of 2 vectors</code></pre>
<pre><code>## [1] 10 10 10 10 10 10 10 10 10 10</code></pre>
The vector example above illustrated (O are input, X are output):<br />
<img alt="" src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAABUAAAAPACAMAAADDuCPrAAAAhFBMVEUAAAAAADoAAGYAAP8AOjoAOmYAOpAAZAAAZmYAZpAAZrY6AAA6OgA6Ojo6ZmY6kJA6kNtmAABmAGZmOgBmZjpmZmZmtrZmtv+QOgCQkDqQkNuQ29uQ2/+2ZgC2kDq225C2/7a2///bkDrb25Db/7bb/9vb////tmb/25D//7b//9v////LbiA1AAAACXBIWXMAAB2HAAAdhwGP5fFlAAAgAElEQVR4nO3da2PbSHuYYXrfZN9E7kFuksptlk2XbZe29f//X0mCIAcHUsAjEOBgruvD2taKGEIib+EwgDbvAIRsln4CALkSUIAgAQUIElCAIAEFCBJQgCABBQgSUIAgAQUIElCAIAEFCBJQgCABBQgSUIAgAQUIElCAIAEFCBJQgCABBQgSUIAgAQUIElCAIAEFCBJQgCABBQgSUIAgAQUIElCAIAEFCBJQgCABBQgSUIAgAQUIElCAIAEFCBJQgCABBQgSUIAgAQUIElCAIAEFCBJQgCABBQgSUIAgAQUIElCAIAEFCBJQgCABBQgSUIAgAQUIElCAIAEFCBJQgCABBQgSUIAgAQUIElCAIAEFCBJQgCABBQgSUIAgAQUIElCAIAEFCBLQdfj1fXPw25/Jh35+O37o97/GLmr/+pknUo168PFSdsdPe3nEk2gv5fSkvvzxqWVdVixx48lPb4oV4BEEdCVONdq8JR/ZD+xY04+vox/SGfPso3bfDujnnkR3KQLKgwjoShxq0XpHbzfj33SnDdl4u7bNvnww+K2AfvJJ9CxFQHkQAV2Jzj589YYf+RbfRjZaL3btwDQOKfR/es8T/NyT6FuKgPIgAroW7X34apP07c4jenyqXefEvCV/v1uY+QI6hUUbJqDPSkDXor0Pv/t4E7DrU9XZN0bcfji+gOYxOHcI6Fq09uGrf47dx/xUdZoP/ngLWEDzGJw7BHQ1mvvwrX6dd6lf+x5SRyw9hV4/sOpwuiW5q5az6y5u2whi9cjXy0PO5+SrD79dPvxSj/vW+yR6RquPtDYHv7sq7f5012p/XuLtuV83GlY94PzxXeOJdZ7o9vyZ6Xeq+j5dPmWXrnfr23cdvP+7yQIEdDWab8U0WukJkGSLLznnc/poN6DVIjdJIuqkbZudPdneelffDejluVUj9AY0GS09UfXaHOH2qjT707dWVUCvX6fuWtzaCKyGOq1dteDzivY80Sqgl/9x+MTWytcBvTz9OvGNwfu/myxCQFejSlOjU+c3blKMa1TPW2HJRzsBbZ5VTzcA/3Pz/V2pH995V98L6D9da3AKRF9Ak9F6n9KHq9LoT+8iTg/4L187H7+6uRd9+blRPY3GxmhzaaeA/qfkmf6f64DnL+XpYf92/ZTz0tLBe7+bLERA12O/ab3L0nff1blvrTmbr92A7jedT3m/tQnYHqexaXovoKljRPoCeh2tEY9LdT5clbQ//WvV/mj39FfPNKaXZI0On59eudD7RLedJXSex42ZYMkK9H83WYiArkf11kreiOdmbeuOJH9L9jyr93ryFk8nT1b/qj65egMnb/H29lizQq0JATcDehy5cVAvfRKt0bbNB6R7/R+uSqM/7bXaX8c4t699+utmQOv5D43Dp71PdHt9WL1e158Z1QN31+eRfk2SFej9brIUAV2R7eWNmO7Bp5tf1xPf189ND56m1UmvZEpm5TfP1jS1tp9e0g/fCmj18XQOQU9Az0tKViU5SfbxqrT7012rNGKNk1oXtwPa8zPlzhNNf0qk1azW/cbX5Lq8/u8mSxHQFbnuw6d78Pt2gS4bRvUW5Payw5pUJ92eTRedvsU7WpVJD+zdCGj9HJLjD92AXkc7PPwlGentfciqtPvTs1ZpNJufc2PV0nYlx2Avj+p5oo2pselp9mQCbePs+7W91xXo/W6yGAFdkes7P902SUtyeqsf34jNSe8Xyec2P+O6Sdu9a0nPc2gW9F5AmxMFrp1pBLRntOvnf7wq7f70rFV6/LhxAq454I2pmJcjnj0/V9orlp6kPz+R5Mdd4/KH6xO5Dt773WQxArom9Ts0qVTrFHXdo33/2z15e+6an3GZ5NnYbrzzNCpD5oEmH+/sfN8aLZnY9PGqJP25tVZpWMcHND10efuJNibKpgO2A3p5fpd1uAze/91kMQK6JvW7Mt2363nLvXZCUmsHtHUi6BLQD/cb6w3R0xBDApoM3Qloc7T0QOvb+5BVaQe0Z60aW6a9FzHdDej5i9w7t/9OQM/Puh3Q5tfk5f1+QE2nX5KArkm9u5geKHtIQAdMP0xmRX42oMlorelG0wa0Xsj4gJ734ZP/3fNEBXSFBHRVzu+47eU9e2uH9JO78P0BPbzNk3PC1yykD0kOCTaWdG8XvvUsTh9pHQOdZBc+HNBL1po7360nOjigH+7Ca+bTENBVqfZE//e33ndh9xP/vPzjrfO5fadb7mzwdW+/1F+tdkAbFyveOIl0GS051XPjJFLvqnxwEqlT4dEBve6spxc2tZ/o4IAOPYnE8gR0Vap367813mS9xUve1unZ4aHTmPoC2v4VItdWpdVK5gt1p+zcmMbU97OgNY3p7qoMncYUDWj34vreJzo4oN2vyc1NaBYmoOuybb2T35s3Gdk3p8lXb8QkKkMn0t+8XdF13OTCnCSa553dJKBVWNML+W8GNN1/TUrz8aoMnEgfDOh5wvt/XG8lcu+JDglo52tyHbz/u8lSBHRd+mYkVlG9HOlLo9Z7sWH6tr5xKWfvJtAuHfl8EuXtuqTk8sTGpZztyxa70yVb9z+5XsaYXpV6b1U6Fwb1X8oZDGidyOvN7G480cEBTc8X9V/K2fpushQBXZfL6Yzk/d+6scV5B7F7B4735GDea/qPxuNuB7TnDPHLjf/RfzOR9o3gOrMFOo9IL4u8syqd6x87azUwoC3JNuFLd95B5zkND2j7a9L9CdB6/ixEQFcmuUPHRXNKzc17wL0n787XZFnNx90/C9/37m88gS//ennXt2/dVj/n9Ek0R0sH+Ievm/5A96zKwNvZhQKaXLF+vR9o/xMdGtB//JfGCO/NFej9brIQAV2Zczeat5jov9FcUpLmzMPLB27eUPnWfmNvnN6TN/35fsLXgHZvHtx4Eq3Rrk/orXEh+AerMvCGyqGApncIue7E9z7RwdOY/l/9E+GjGyrb/lyagK5MepYmcX7TtY7h7dqhS49Xpotr/0qP2wfeLu/u1qdcTt60A9p3ueb1SXRGu57rb2bu7qq0j1/e+JUekYA2DkSmX/yeJzpiHmh6N5j3zgr0fzdZgIDC8zBLKTMCCs9DQDMjoPA8BDQzAgrPQ0AzI6DwPAQ0MwIKz0NAMyOg8DwENDMCCs9DQDMjoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBzx3QDcBkpk/U5Euc0NJfbWBdJm/U1Auc0gN+YADFElCAIAEFCBJQgKD8Arq9HL19Gf9gAQWmk1lAd60zYGMbKqDAdLIK6I+vnTkEv/05agkCCkwnp4D++t4s5s9vh3///teYRQgoMJ2cArrv5PKY1LcxixBQYDo5BXTb3WE/bISOOgwqoMB0MgroYXPztfPB3bh9eAEFppNRQA9bm93d9f2400gCCkxHQAGCMgqoXXjguWQUUCeRgOeSU0D7pzF1t0rvEFBgOjkFtHci/bhLkQQUmE5OAa2K2fTlj1FLEFBgOlkFNL0Vk5uJAEvLLKDvbmcHPI38AjrCHL8CCiiXgAIE5RrQ0xn5cVOYjgQUmE5mAd2f7wC6j91PWUCBCWUV0Gqzc/Plj+ut6d2RHlhMVgGtT8D//r/O5dy6Iz2wnJwCetjuPGbz9Ivlzt3cuyM9sJicAro777BvrxcgHXbq3UwEWEhGAb3czu6wJXrZcXc7O2AxGQX0ckPldLPTDZWBxeQY0MM+vIACy8sroOeJ89t0F15AgYVkFNDDnnv3eOfWSSRgKRkF9Dh/qT1nae+O9MBicgro8X7KL+0PuCM9sJScAlpdAX/dCN02/zmEgALTySqgx4Imv8NjN7qfAgpMKK+AHrY6k1323fh70gsoMJ3cAvpJAgpMR0ABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCMg3oz2+bg9//Gvs4AQWmk1FAD9Gsi7ndnL2MXIaAAtPJMqCXfo7eCBVQYDo5BnR/COfr+SMjt0EFFJhOhgE9/Pnbn+eP7TZf/hizDAEFppNhQPfn7c+jX9/HbYIKKDCdDAPa2OrcjTsKKqDAdDIM6DYN6P66Oz+EgALTyTKgSTMFFFhMhgHd2QIFnkKGAd1vNm+XD24dAwWWkmFA0zPv6Rn5IQQUmE5eAd2cptBfqnlI6bg9eAEFJpRfQE9O2Txd0fn24eNSAgpMJ6OAvicNPQV0N7qfAgpMKK+AVn58rU/Hj70Zk4ACE8oxoINteiz9nID1EFCAoFUHtEtAgelkFtAfX5s3Uf713ZVIwFLyCmh9K/rLySMBBZaTVUCvv8qj3ggVUGA5OQX0uP9+nPe5uxZUQIHl5BTQy41Aj5dwVgUVUGA5GQU0vYnIdnO5sYiAAgvJKKA/vzVuY3cqqIACy8k1oMeCvggosKRsA3o8DvoqoMCCMgpo61cYHwv6JqDAcjIK6HH6Unr3uh9fN1/+XUCBxeQU0OM80PQXeOyvtwYdSkCB6eQU0NMM+nQ3fi+gwIKyCuipoOk26HGbVECBheQV0OOZo+Zv4dwJKLCUzAL6WQIKTEdAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABgvIL6HZTexn/YAEFppNZQHebprENFVBgOlkF9MfXTdtvf45agoAC08kpoL++N4v589vh37//NWYRAgpMJ6eA7ju5PCb1bcwiBBSYTk4B3XZ32A8boaMOgwooMJ2MAnrY3HztfHA3bh9eQIHpZBTQw9Zmd3d9P+40koAC0xFQgKCMAmoXHnguGQXUSSTg8f52NuRzcwpo/zSm7lbpHQIK3PW3v40oaE4B7Z1IP+5SJAEF7rmEc1BBcwpoVcymL3+MWoKAAnck2VxdQNNbMbmZCDC5tJoDCppZQN/dzg54nNUHdITODv9GQIE7BPRKQIFRBPQeAQXuWHdAT7dUTiaD/vruUk5gMqsOaH0C6XL6SECBCa15GtP1BHy9ESqgwJTWO5H+uP9+vB/T7lpQAQUmtdpLObf1dUfHazqrggooMK2V3kzkEMvLsc/tuaACCiwno4A2bqh8LqiAAsvJNaDHgr4IKLCkbANa3QpUQIHlZBTQ9Bjo+/l3wgsorNuYUzrzyyigx+lL6W+V+/F18+XfBRTWbNSkovnlFNDjPND0F3jsT3PqBRRWa9y09vnlFNDTDPp0N34voLBmIy+snF9WAT0VNN0GPW6TCiis1chbe8wvr4B2fzf8TkBhtQT0uQgoZERAn4uAQkYE9LkIKGREQJ+LgEJGBPS5CChkxDSm5yKgkBMT6Z+KgEJWXMr5TAQU8vLU/RRQgCgBBQgSUIAgAQUIElCAIAEFBnvuc+LzE1BgqCeflTk/AQUGevbrguYnoMAwT39l+vwEFBjm6e+NND8BBYYR0A4BBYYR0A4BBYYR0A4BBYYR0A4BBYYR0A4BBYYxjalDQIGBTKRvE1BgKJdytggoMJh+NgkoQJCAAgQJKECQgAIECShAkIBCvpwUX5iAQrZMy1yagEKuXBi0OAGFTLk0fXkCCplyc6TlCShkSkCXJ6CQKQFd3mwB/flts/nyx/vu97+mHnAMAWU9BHR5MwX0mM8qoJvN29QjjiCgrIeALm+egFb9PAZ0u1m0oALKegjo8mYJ6K/vm83vf/34egjosaC//Tn1mIMJKOthGtPyZgnofrN5fX+vAnrciX+deszBBJQVMZF+cbMEdLs5njo6B/SwObrciSQBZU1cyrm0OQJ6SOZxm/Mc0MMm6HL78ALKqujnwuYI6M9vp/NGdUD3AgqsgoACBC2wC791DBRYhZlOIh23Oc8BPWyPvkw95mACCkxnrmlML3VAj3NCl5tJL6DAdOa5Euk0e/4U0N1ms+AevIDySM6JF2fWSzkrC16IJKA8kFmZ5ZnpZiLHHfcn6KeA8jiuCyrQbLezOyd00XwKKI/jyvQSuaEyTMK9kUokoDAJAS2RgMIkBLREM13K2eRSTtZHQEuUaUCrRY6fUCqgPIqAliijgB4WUxdzWy9p7EWhAsqjCGiJ5j4G+onbKV8Dur22eOTCBJRHMY2pRPOfRNpFC3oJ6H5z/q0gx03bcdugAsrDmEhfoPkDetgGjd1MpA7o4c/LMYDdprpF3uAnJ6A8jEs5y7PANKboJmgd0H3yW+kONR61CSqgPJB+FmeRgH7uJFJjq3NkjQUUmE6GAd2mAR35+0EEFJjO/AFNZiONcw1o0kwBBRYze0DHnzlPHtndhRdQYDFLTKQfd+I8XUx9Eul6Gn/kb6gT0II4pcPDLRHQ155HDVAHND3zvh+5NAEth0lFPN78AQ1fCH9ezOu1msebNI9bnIAWw7R2ZpDR7ezSDp+yebqic9ykfAEthQsrmUNGAX1PGnoK6G50PwW0GG7twRzyCmjlx9f6dPzo0/kCWgoBZQ45BnSwTY+lnxPzEFDm8NiAdu4EOtUNlQc+FQEtloAyh1UHtOfJCWghBJQ5CCirJKDMYdXHQLsEtBSmMTEHAWWdTKRnBgLKSrmUk8dbIqA//1v0fqCfPqAqoAXRTx5upoDuJziJJKDAc5knoNtPNO/qx1cBBZ7ILAFtly/2WzmrbdDgvfDqJyegwGRmCej2dBP66tL1bbyfp4IG78Z8JqDAdOYI6K/vp5t/7Ot7KH1iHn19H5HwkxNQYDIz3VD5uOP94+tp6/GQ0/gm6PEWdp94tIAuxzlxVmimgL5d/4jcha6xrM9sggroUszKZI1mDOhh0/N0BujH188k8HOboAK6ENcFsUozBvR9W216/vjqZiKlcWU66zTTSaTTpueu/rXEAloa90ZinWaZxnQ+8b6v5iDtPnci/VMEdBkCyjrNNZH+mM5qDtJ+85mTSJ8koMsQUNZpvks5X69XdH5mItLnCOgyBJR1miegv76fqnm+HchyG6ACuhABZZ3mup3dvroE87wpuhgBXYaAsk5uqMwMTGNinQSUOZhIzyrNM5F+yb32BgFdiks5WaOZrkRa8sx7SkAXo5+s0GwB3XzyTp7TEFBgOvMcA61vSb/cNZxnAgpMZ7aTSPWvlVvuMs4jAQWmM+dZ+N25oSbSA6sw8zSm3cJ78gIKTGf+eaB7AX0CzonDBGYO6NYW6FMwKxOmMGdA65sxLTitXkBPXBcEk5gtoE9wBuldQCuuTIdpzBPQ3VPMYXoX0Ip7I8E0ZrwSafFZ9O8CWhFQmMZcAX2G6zjfBbQioDCNeQL6HHcSeRfQioDCNNwPtEACCtMQ0AIJKExDQAtkGhNMQ0BLZCI9TEJAi+RSTpiCgJZJP2ECAgoQJKAAQQIKECSgAEEC+hSc04EcCegzMKsIsiSgT8C8dsiTgC7PlZWQKQFdnnt7QKYEdHkCCpkS0OUJKGRKQJcnoJApAV2egEKmBHR5AgqZEtDlmcYEmRLQJ2AiPeRJQJ+BSzkhSwL6FPQTciSgAEECChAkoABBAgoQJKAAQQLawzlxYAgB7TIrExhEQDtcFwQMI6BtrkwHBhLQNvdGAgYS0DYBBQYS0DYBBQYS0DYBBQYS0DYBBQbKL6DbTe1l/IMFFJhOZgHdbZrGNtQ0JmA6WQX0x9dN229/jlqCifTAdHIK6K/vzWL+/Hb49+9/jVmESzmB6eQU0H0nl8ekvo1ZhJuJANPJKaDb7g77YSN01GFQt7MDppNRQA+bm6+dD+7G7cMLKDCdjAJ62Nrs7q7vx51GElBgOgIKEJRRQO3CA88lo4DOdBLp73+/9Y8HaY5RwIhzDFjCiF44DxrxOgvn4xFzCmj/NKbuVukdgwL6996/P0xjkAJGnGXAEkb0wnnQiJd54ANGzCmgvRPpx12KNGR1r1+1eb5j6TAFjDjTgCWM6IXz0BGH9DOrgFbFbPryx6glDFrd+us213fsOlABI842YAkjeuFM77rdOWjErAKa3orpYTcTea+/cvO98eqhChhxxgFLGNELZ3J/+9t1xAEXI2YW0PfH387u6PgVnPONVw1WwIizDljCiF44U6vOHVUjrjKgI3R2+DdDV/fvf5/3jVcNWMKIcw5YwoheOBM7RfM8ooBGAzrzhks1YAkjzjtgCSN64UyrimY1YukB7bIFuvSIcw5YwoheOBOzBXqPY6DLjrjyI5JeOI8a0THQ5+As/MIjzvnOK2BEL5zJXebPH/474I7AAtpVf69m+55dBipgxPneeQWM6IXzAKueB/pZrkRafMS53ggFjOiF86ARh1/JmVNAe65DGv1r5VwLv/yI87wRChjRC+dBI15uJjJgRAFta3zN5nmN3P7XKkec6X2w+hG9cJ5gxIwC2vdbjR8QUICBcgroaRt01N3rOgQUmE5WAT0WdOTtl1oEFJhOXgE97sWP+hUebQIKTCezgL7vNj2/WW44AYW8XH/BxjPKLaCHnfjPbIIKKGTl8vs1nrOguQX0k5ugAgo5uYTzSQuaXUA/R0AhI0k2BfQJCChkJK3mUxZUQIFnJaDPRUAhIwL6XAQUMiKgz0VAISMC+lwEFDIioM9FQCEjpjE9FwGFnJhI/1QEFLLiUs5nIqCQl6fup4ACRAkoQJCAAgQJKECQgAKDPfcpnfkJKDDUk08qmp+AAgM9+7T2+QkoMMzTX1g5PwEFhnn6W3vMT0CBYQS0Q0CBYQS0Q0CBYQS0Q0CBYQS0Q0CBYQS0Q0CBYUxj6hBQYCAT6dsEFBjKpZwtAgoMpp9NAgoQJKAAQQIKECSgAEECChAkoJAvJ8UXJqCQLdMylyagkCsXBi1OQCFTLk1fnoBCptwcaXkCCpkS0OUJKGRKQJcnoJApAV2egEKmBHR5AgqZEtDlCShkyjSm5Qko5MpE+sUJKGTLpZxLE1DIl34uTEABggQUIEhAAYIEFCBIQAGCBBSm4px4cQQUJmJWZnkEFKbhuqACCShMwpXpJRJQmIR7I5VIQGESAloiAYVJCGiJBBQmIaAlElCYhICWSEBhEgJaIgGFSZjGVCIBhWmYSF8gAYWJuJSzPAIKU9HP4ggoQJCAAgQJKECQgAIEZRrQn982B7//NfZxAgpMJ6OAHqJZF3O7OXsZuQwBLYhz4jxclgG99HP0RqiAlsOsTB4vx4DuD+F8PX9k5DaogBbDdUHMIMOAHv787c/zx3abL3+MWYaAlsKV6cwhw4Duz9ufR7++j9sEFdBSuDcSc8gwoI2tzt24o6ACWgoBZQ4ZBnSbBnR/3Z3veSo9HvXseC4CyhyyDGjSTAGll4AyhwwDuhu8BdoloKUQUOaQYUD3m83b5YNbx0DpI6DMIcOApmfe0zPyQwhoKUxjYg55BXRzmkJ/qeYhpeP24AW0HCbSM4P8Anpyyubpis63Dx+XEtByuJSTx8sooO9JQ08B3Y3up4CWRD95uLwCWvnxtT4dP/ZmTAIKTCjHgH6CgALTEVCAIAEFCBJQ5uGUDiskoMzCpCLWSECZg2ntrJKAMgMXVrJOAsoM3NqDdRJQZiCgrJOAMgMBZZ0ElBkIKOskoMxAQFknAWUGAso6CSgzMI2JdRJQ5mAiPaskoMzCpZyskYAyD/1khQQUIEhAAYIEFCBIQAGCBBQgSEDL5Jw4TEBAi2RWJkxBQEvkuiCYhIAWyJXpMA0BLZB7I8E0BLRAAgrTENACCShMQ0ALJKAwDQEtkIDCNAS0QAIK0xDQApnGBNMQ0BKZSA+TENAiuZQTpiCgZdJPmICAAgQJKECQgAIECShAkIACBAnoU3BSHHIkoM/AtEzIkoA+ARcGQZ4EdHkuTYdMCejy3BwJMiWgyxNQyJSALk9AIVMCujwBhUwJ6PIEFDIloMsTUMiUgC7PNCbIlIA+ARPpIU8C+gxcyglZEtCnoJ+QIwEFCBJQgCABBQgSUIAgAe3hlA4whIB2mVQEDCKgHaa1A8MIaJsLK4GBBLTNrT2AgQS0TUCBgQS0TUCBgQS0TUCBgQS0TUCBgQS0TUCBgQS0zTQmYCAB7TCRHhhGQLtcygkMIqA99BMYQkABggQUIEhAAYIEFCAov4BuN7WX8Q8WUGA6mQV0t2ka21ABBaaTVUB/fN20/fbnqCUIKDCdnAL663uzmD+/Hf79+19jFiGgwHRyCui+k8tjUt/GLEJAgenkFNBtd4f9sBE66jCogALTySigh83N184Hd+P24QUUmE5GAT1sbXZ31/f3TiN1TjltBBSYjoACBGUUULvwwHPJKKBOIgHPJaeA9k9j6m6V3iGgwHRyCmjvRPpxlyIJKDCdnAJaFbPpyx+jliCgwHSyCmh6KyY3EwGWlllA393ODnga+QX0UwQUmI6AAgQJKECQgAIECShAkN8BILcAAAp4SURBVIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQVF1CA6UzeqKkXOKWlv9jAukzeqKkXWIgCji4UsIolrGMBq7jkOhbw1X2IAl6WBaxiCetYwCoKaH4KeFkWsIolrGMBqyig+SngZVnAKpawjgWsooDmp4CXZQGrWMI6FrCKApqfAl6WBaxiCetYwCoKaH4KeFkWsIolrGMBqyig+SngZVnAKpawjgWsooDmp4CXZQGrWMI6FrCKApqfAl6WBaxiCetYwCoKaH4KeFkWsIolrGMBqyig+SngZVnAKpawjgWsooDmp4CXZQGrWMI6FrCKApqfAl6WBaxiCetYwCoKaH4KeFkWsIolrGMBqyig+SngZVnAKpawjgWsooDmp4CXZQGrWMI6FrCKApqfAl6WBaxiCetYwCoKaH4KeFkWsIolrGMBqyigABkSUIAgAQUIElCAIAEFCBJQgCABBQgSUIAgAQUIElCAIAEFCBJQgCABBQgSUIAgAQUIElCAIAEFCBJQgCABBQgSUIAgAQUIElCAIAEFCBJQgCABBQgSUIAgAQUIEtCAH183B1/+WPp5PNphPd+Wfg6PtD9+G1e9itUr9WXpp/EoP7/99mf6r+PKvs77FAR0tOr7dJR+91bouKIrrksVlzV/G399r1+p6/w2HtYv+d5tz+s674aNgI517eeK33on29W+844u/dxsfv9r6SfzGNvrK3WV38dt+g7cLfOuFNCxdvVuwnbNO0fv5x3cVb7xjo4/B0/hvHw/V2d/foEeV3WFP+pP29eX9Tr+PDx+P/czvysFdKRkv3a3ytdlrdrSXm1Ad5cNz/1aN0G39U+GVR6LqfYgLm/Abd3Nw8fn3IkX0JH21x9wxx+Bq3td1o7Hl/7HetfvsHr12yz567psL+u1W91G9unH+z9fj4Ee/l3/dd6VFdCR0m/Pdr2BOa7n226963fYTlnz4ZeTRkBX9o08Hnh5S04iJd/Pw19n3KMQ0E/YrnTT5f30Knxd4fvuYr+6bbKuy8/6FW5j7469TAKabNc0z80/moDGHXYb1nnw7PQiPKzaigN6WrVqms9aV/G0m/uS/Lk6zYC+XT86448LAY1b35Gli2rbesUBPa7gbolpL3O6zrhbZT/TgKZH02bdMRTQsHmPtczqvIO77oD+awHTebcrngXaCug1mgKahUM/1/rGq49NrDeg1c77aSXnnjg4o+tE+rUdAq3cDOiML1sBDdqveMNle161lQf0fPxl5omD89me1/G4sqtcQ1ug+VpzPy/dXG9Aj3G5HH9Z6Wy05AfDbp3XCghotrbrfEWeXKfUrTuglxOAK53S1JzZs8ZNUGfhM3XcJ1rpYbP39K4MlTXGpTGDYqUBTTfE1vmjMAno3jzQfByvwl3jO+6siIAmV+QKaK5ciZSl1Z50OCsioOkcipUeA23uwq9xFX+5Fj5Dh2/VqvuZWOd2S+Vy957Vzkfbb9KTSGtcxXRn3d2YMrHSH+a91hzQ+v6Rp3mgq9zIvkzVSudsrUoaUPcDzcS+uX+72sAcrTmg6ZGKlU6oSO65v85VbJwuckf6LFx/zYyAZm6/6rgcXa+FX+cq+p1I+Ul/I5KAZm47+/bK3Fq3bV+Z1oQlv5UTICcCChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgxPz6vvntz/uf8vPb5ve/PjnMbnNwXcqAUe8+o/+ZLPhl/IMm/VxWQECJmSWgh0GOXtIPfCKg281r8ve38Q+a8nNZAwElZpaA7k/9TKr0qYDukyX9/DZwOemDpvxcVkFAeZjPB3S3+fxBgKu0b/uhCxZQ7hBQHmaSgA7c0R4i7dvgnW0B5Q4B5WGeOKC/vn/5Y/SDJv1cVkFAiTkfjaz+aJ0rP5TzeOYnCWh1MLOK4Y+v5+OYh8e2M5Z+3mkpzUOgt0c9LPSlHve9tfDD/zt81vl4arXwH1/7ntm9B40cgDIIKDFJyv7jazMdu+pfv//fOqA/6k+owrk7N3HX3mC7JPP0eR8EtDnqsW/nYaqs3e9bPYmpOeJHAR0xAGUQUGKuKbuqgrKr//lP54Be+nnu1Dk9nT38S82qz7sf0NaohzH++Xv6gbt9O/zPt54RPwjoiAEohIAS00jZsRm7c+qOUTqG8dST41+On3JKzfEjpw2//enPbXsHfntewq7+vO4x0JujniJ9/F/1IJ2+pYco60lM7RHvPGjcABRCQIlJUnaeUbmrwnKZenRMzrmk5y3NQ1ur5hzbud+0rgU6fP65SJe/3Qtoc9R6sMuD7/ZtXw3dGfGDgA4fgEIIKDFJys7RqDKSdOWc0mRLsy7MoaT/3JkSv7sWNTlKejOgjVGTFh43K18/6Nv2svjmiPcDOmIACiGgxFxT1szIoY11GC8fuBzqPJ3KPtr1HCzcXj9Sf96dgLbiVTfsvT5AcK9vP7/VG8KtEe8HdPgAlEJAibkT0Do01V+TEzX1UdFqE/Kls8DLlmpdpFEBfbk++IO+nScxdUe8H9DhA1AKASXmVsqSLbUqoMk5+GtAjxt/3YBe9unrCkcDer+Fh8W+9o84OKAfDEApBJSYwVugSVGv9t1d+Pm2QOtJTLZA+SwBJWbMMdDOjY8Oj/rHf2l3NTkiWZ+hf8wx0B9fz0+oM6JjoIwjoMTcStnx6Ob1iqTmBy6OYezUJjknvv34LHw3oHWmz1m8nvyvJ1bVI+7rcboj3n7QmAEohoASczNll3mg9Yz63WXOZl2Y02d2roQfNw+0G9BzDOvSXY6y1s/j0rfLvZS7I95+0JgBKIaAEnMzZcecHP/P6eRR/YEqWdtNnanjH8lRxUp6XVDV4HEBvVwAVe/+n5Z2uSKqntFfT2LqG/Hmg8YMQDkElJibKbtcE775r99aH7gW51SgbSuP7SvTRwb0H5q3LLku7b83rsl/S+6l3Bnx5oPGDDDxV5onJqDE3A5oHcyeuzGd+nmZPXT7biL1Lv+4s/D75oPrbr/W41RX0L/ukv3szoi3HjRmgCm+vORBQIm5E9AqJI37gVZ3aLpchfT63vpbrXF3ztHTmE6hTh5w3EM/fN7leZye1z8376XcGvHGg15GDDD0t32yAgLKKnQOqGY3ADkSUFZBQFmCgLIKAsoSBJRVEFCWIKCsgoCyBAFlFQSUJQgoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQND/Bzqj4uJUn7a3AAAAAElFTkSuQmCC" title="" width="672" /><br />
R has more operators that will be considered in other posts.<br />
<ul>
<li>Matrix Operations in R</li>
<li>Logical Operators in R</li>
<li>Bitwise Operators in R </li>
</ul>
<h4 class="author">
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Back to Mike's Big Data, Data Mining, and Analytics Tutorial</a> </h4>
<br />
<ul>
</ul>
</div>
</div>
Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com0tag:blogger.com,1999:blog-7503353345181123469.post-52357368329481895312015-06-06T21:14:00.001-07:002015-06-06T21:40:27.488-07:00Introduction to R Data Types<div class="section level1" id="data-types-in-r">
<h1>
Data Types in R</h1>
<h4 class="author">
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Part of Mike's Big Data, Data Mining, and Analytics Tutorial</a> </h4>
<br />
<br />
An important first step in understanding the R programming language is gaining an understanding of how R represents different types of data. This post will give an introduction to the range of data types available.<br />
<div class="section level2" id="primitive-values">
<h2>
Primitive Values</h2>
The R programming language has a few primitive (called atomic) types that are going to be relevant to most people who aspire to develop in R:<br />
<div class="section level3" id="raw-holds-raw-byte-values">
<h3>
Raw: Holds raw byte values</h3>
</div>
<div class="section level3" id="logical-boolean-values-true-or-false">
<h3>
Logical: boolean values <code>TRUE</code> or <code>FALSE</code></h3>
<pre class="r"><code>a <- TRUE # a True Value
a <- T # another way
a</code></pre>
<pre><code>## [1] TRUE</code></pre>
<pre class="r"><code>b <- FALSE # a False Value
b <- F # another way
b</code></pre>
<pre><code>## [1] FALSE</code></pre>
</div>
<div class="section level3" id="numericinteger-non-floating-point-numbers-like-1-2-3">
<h3>
Numeric/Integer: non floating-point numbers like 1, 2, 3, …</h3>
<pre class="r"><code>a <- 42 # an integer Value</code></pre>
</div>
<div class="section level3" id="numericdouble-floating-point-numbers-like-1.1-1.2-.99">
<h3>
Numeric/Double: floating-point numbers like 1.1, 1.2, .99, …</h3>
<pre class="r"><code>a <- 3.14159 # a floating point Value</code></pre>
</div>
<div class="section level3" id="complex-complex-numbers-a-bi-where-i-sqrt--1">
<h3>
Complex: Complex numbers… <span class="math">\(a + bi \)</span> where <span class="math">\( i = sqrt{ -1 } \)</span></h3>
<pre class="r"><code>a <- complex(real = 1, imaginary=2.1) # a complex Value</code></pre>
</div>
<div class="section level3" id="character-string-values-like-a-badly-documented-language-is-hard-to-learn">
<h3>
Character: String values like “a” “badly” “documented” “language” “is” “hard” “to” “learn”</h3>
<pre class="r"><code>a <- "programmer" # a string value</code></pre>
There are a few additional types that appear, but will be addressed in other parts of the tutorial:<br />
<ul>
<li>Expressions: Parsed strings of R code</li>
<li>Symbols: Typically used to insert mathematical notation into plots</li>
<li>Functions: Performs a set of operations on a set of inputs and may or may not return a result</li>
</ul>
</div>
</div>
</div>
<div class="section level1" id="vectors">
<h1>
Vectors</h1>
The need arises frequently (perhaps more frequently than storing a single value) to store more than one value and access the values in an efficient way. This is accomplished using vectors, arrays (covered later), data frames (covered later), and lists (covered later).<br />
The easiest way to create a vector is with the <code>rep</code>, <code>c</code>, <code>seq</code> commands or the <code>:</code> operator:<br />
<code>rep</code> creates a vector with the first argument repeated n times:<br />
<pre class="r"><code>a<-rep(1,10) #Fill a vector of length 10 with the value 1
a</code></pre>
<pre><code>## [1] 1 1 1 1 1 1 1 1 1 1</code></pre>
<code>c</code> concatenates values/vectors into a larger vector:<br />
<pre class="r"><code>a<-c(1,2,3) # a simple vector
a</code></pre>
<pre><code>## [1] 1 2 3</code></pre>
<pre class="r"><code>b<-c(4,5,6) # another vector
b</code></pre>
<pre><code>## [1] 4 5 6</code></pre>
<pre class="r"><code>a_b<-c(a,b) # combination of vectors
a_b</code></pre>
<pre><code>## [1] 1 2 3 4 5 6</code></pre>
<code>:</code> builds ascending or descending numeric sequences/vectors (with a step size of 1):<br />
<pre class="r"><code>a<-1:10 #Ascending Sequence from 1 to 10
a</code></pre>
<pre><code>## [1] 1 2 3 4 5 6 7 8 9 10</code></pre>
<pre class="r"><code>a<-5:-5 #Descending Sequence from 5 to -5
a</code></pre>
<pre><code>## [1] 5 4 3 2 1 0 -1 -2 -3 -4 -5</code></pre>
<pre class="r"><code>a<-1.1:10.1 #Non-Integer Ascending Sequence
a</code></pre>
<pre><code>## [1] 1.1 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1 10.1</code></pre>
<code>seq</code> generates ascending or descinding sequences using a start point and an end point, then either a length or an increment:<br />
<pre class="r"><code>a<-seq(from=1,to=10,by=1) #Equivalent to 1:10
a<-seq(1,10,1) #shorter version with from, to, increment...
a<-seq(1,10,length.out=10) #Equivalent to 1:10
a</code></pre>
<pre><code>## [1] 1 2 3 4 5 6 7 8 9 10</code></pre>
Individual vector elements can be accessed with <code>[</code> and <code>]</code>. Some illustrative examples:<br />
<pre class="r"><code>a[5] #The fifth element</code></pre>
<pre><code>## [1] 5</code></pre>
<pre class="r"><code>a[-5] #Not the fifth element</code></pre>
<pre><code>## [1] 1 2 3 4 6 7 8 9 10</code></pre>
<pre class="r"><code>a[1:3] #Elements 1,2, and 3</code></pre>
<pre><code>## [1] 1 2 3</code></pre>
<pre class="r"><code>a[c(1,2,5,7,10)] #Elements 1,2,5,7, and 10</code></pre>
<pre><code>## [1] 1 2 5 7 10</code></pre>
Another interesting thing is that more than one element of a vector can be changed at a time:<br />
<pre class="r"><code>a<-1:10
a #starting point</code></pre>
<pre><code>## [1] 1 2 3 4 5 6 7 8 9 10</code></pre>
<pre class="r"><code>a[5]<-20 #Change 1 element
a</code></pre>
<pre><code>## [1] 1 2 3 4 20 6 7 8 9 10</code></pre>
<pre class="r"><code>a[c(1,2,3)] <- c(10,20,30) #Change 3 elements
a</code></pre>
<pre><code>## [1] 10 20 30 4 20 6 7 8 9 10</code></pre>
</div>
<div class="section level1" id="matrices-and-data-frames">
<h1>
</h1>
<h1>
Matrices and Data Frames</h1>
R has a rich capability to natively build and manipulate matrices (memory efficient structures of only one primitive type) and data frames (structures that can hold vectors of differing primitive types). Selection of data frame vs. matrix usually depends on what libraries you are using and/or what the functions you develop expect as input.<br />
Matrices can be created and filled at the same time:<br />
<pre class="r"><code>a<-matrix(data=1:9,nrow=3,ncol=3) #3x3 matrix filled by columns
a</code></pre>
<pre><code>## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9</code></pre>
<pre class="r"><code>a<-matrix(data=1:9,nrow=3,ncol=3, byrow=TRUE) #Fill by row using data
a</code></pre>
<pre><code>## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
## [3,] 7 8 9</code></pre>
Assuming that the example above is a data matrix, an equivalent data frame can be built:<br />
<pre class="r"><code>#Note: c1,c2,c3 become the column names. Data frames are filled by columns
a<-data.frame(c1=c(1,2,3),c2=c(4,5,6),c3=c(7,8,9))
a</code></pre>
<pre><code>## c1 c2 c3
## 1 1 4 7
## 2 2 5 8
## 3 3 6 9</code></pre>
<pre class="r"><code>a<-data.frame(c1=c(1,4,7),c2=c(2,5,8),c3=c(3,6,9))
a</code></pre>
<pre><code>## c1 c2 c3
## 1 1 2 3
## 2 4 5 6
## 3 7 8 9</code></pre>
Individual elements in both matrices and data frames can be accessed using <code>[</code> and <code>]</code>:<br />
<pre class="r"><code>a<-matrix(data=1:9,nrow=3,ncol=3) #3x3 matrix filled by columns
b<-data.frame(c1=c(1,2,3),c2=c(4,5,6),c3=c(7,8,9))
#Use [row_indices, column_indices]:
a[3,1]</code></pre>
<pre><code>## [1] 3</code></pre>
<pre class="r"><code>b[3,1]</code></pre>
<pre><code>## [1] 3</code></pre>
<pre class="r"><code>#Entire rows and columns can be selected
a[1,] #Entire first row of a matrix</code></pre>
<pre><code>## [1] 1 4 7</code></pre>
<pre class="r"><code>b[1,] #Entire first row of a data frame</code></pre>
<pre><code>## c1 c2 c3
## 1 1 4 7</code></pre>
<pre class="r"><code>a[,1] #Entire first column of a matrix</code></pre>
<pre><code>## [1] 1 2 3</code></pre>
<pre class="r"><code>b[,1] #Entire first column of a data frame</code></pre>
<pre><code>## [1] 1 2 3</code></pre>
<pre class="r"><code>b$c1 #Data frames only - access by column name</code></pre>
<pre><code>## [1] 1 2 3</code></pre>
<pre class="r"><code>a[c(1,3),] #rows 1 and 3 of a matrix</code></pre>
<pre><code>## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 3 6 9</code></pre>
<pre class="r"><code>b[c(1,3),] #rows 1 and 3 of a data frame</code></pre>
<pre><code>## c1 c2 c3
## 1 1 4 7
## 3 3 6 9</code></pre>
<pre class="r"><code>a[,c(1,3)] #columns 1 and 3 of a matrix</code></pre>
<pre><code>## [,1] [,2]
## [1,] 1 7
## [2,] 2 8
## [3,] 3 9</code></pre>
<pre class="r"><code>b[,c(1,3)] #columns 1 and 3 of a data frame</code></pre>
<pre><code>## c1 c3
## 1 1 7
## 2 2 8
## 3 3 9</code></pre>
<pre class="r"><code>#It is possible to do selection of multiple rows/columns:
a[c(1,3),c(1,3)] #Selects combinations of rows/columns</code></pre>
<pre><code>## [,1] [,2]
## [1,] 1 7
## [2,] 3 9</code></pre>
<pre class="r"><code>b[c(1,3),c(1,3)] #Selects combinations of rows/columns</code></pre>
<pre><code>## c1 c3
## 1 1 7
## 3 3 9</code></pre>
The number of rows/columns can be determined using <code>nrow</code>, <code>ncol</code>, and <code>dim</code><br />
<pre class="r"><code>a<-matrix(data=1:9,nrow=3,ncol=3) #3x3 matrix filled by columns
b<-data.frame(c1=c(1,2,3),c2=c(4,5,6),c3=c(7,8,9))
#The most straightforward way...
nrow(a) #Number of rows</code></pre>
<pre><code>## [1] 3</code></pre>
<pre class="r"><code>ncol(a) #Number of columns</code></pre>
<pre><code>## [1] 3</code></pre>
<pre class="r"><code>dim(a) #The dimension of the matrix</code></pre>
<pre><code>## [1] 3 3</code></pre>
<pre class="r"><code>dim(b) #The dimension of the data frame</code></pre>
<pre><code>## [1] 3 3</code></pre>
<pre class="r"><code>#Another way that isn't so readable...
length(a[,1]) #Number of rows</code></pre>
<pre><code>## [1] 3</code></pre>
<pre class="r"><code>length(a[1,]) #Number of columns</code></pre>
<pre><code>## [1] 3</code></pre>
</div>
<div class="section level1" id="arrays---higher-dimensional-objects">
<h1>
Arrays - Higher Dimensional Objects</h1>
Sometimes it is convenient to be able to index an object by 3 or more indices. In this case, arrays are needed. For 2 or fewer dimensions, use matrices and data frames (above).<br />
<pre class="r"><code>a<-array(1:27, dim = c(3,3,3)) #Create a 3x3x3 data structure
a</code></pre>
<pre><code>## , , 1
##
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
##
## , , 2
##
## [,1] [,2] [,3]
## [1,] 10 13 16
## [2,] 11 14 17
## [3,] 12 15 18
##
## , , 3
##
## [,1] [,2] [,3]
## [1,] 19 22 25
## [2,] 20 23 26
## [3,] 21 24 27</code></pre>
<pre class="r"><code>dim(a) #In the case of arrays, use dim instead of nrow/ncol to get the maximum indices</code></pre>
<pre><code>## [1] 3 3 3</code></pre>
</div>
<div class="section level1" id="lists">
<h1>
Lists</h1>
Lists are the closest thing in R to true associative arrays/hash tables. Lists allow a general arbitrary mapping to be created/accessed:<br />
<pre class="r"><code>a<-list(e1 = c(1,2,3), e2 = matrix(1:4,2,2), e3 = FALSE)
a</code></pre>
<pre><code>## $e1
## [1] 1 2 3
##
## $e2
## [,1] [,2]
## [1,] 1 3
## [2,] 2 4
##
## $e3
## [1] FALSE</code></pre>
Lists are accessed a little bit differently. Similar to data frames, named elements can be accessed:<br />
<pre class="r"><code># How to determine names of list elements
names(a)</code></pre>
<pre><code>## [1] "e1" "e2" "e3"</code></pre>
<pre class="r"><code># Access elements by name
a$e1 #The first list element</code></pre>
<pre><code>## [1] 1 2 3</code></pre>
<pre class="r"><code>a$e2 #The second list element</code></pre>
<pre><code>## [,1] [,2]
## [1,] 1 3
## [2,] 2 4</code></pre>
<pre class="r"><code>a$e3 #The third list element</code></pre>
<pre><code>## [1] FALSE</code></pre>
<pre class="r"><code>#Access elements by name in a different way
a[["e1"]]</code></pre>
<pre><code>## [1] 1 2 3</code></pre>
<pre class="r"><code>a[["e2"]]</code></pre>
<pre><code>## [,1] [,2]
## [1,] 1 3
## [2,] 2 4</code></pre>
<pre class="r"><code>a[["e3"]]</code></pre>
<pre><code>## [1] FALSE</code></pre>
Lists can also be accessed with the <code>[[</code> and <code>]]</code> operators and numeric indices:<br />
<pre class="r"><code>#How to determine a list length
length(a)</code></pre>
<pre><code>## [1] 3</code></pre>
<pre class="r"><code>#Access elements by index:
a[[1]] #The first list element</code></pre>
<pre><code>## [1] 1 2 3</code></pre>
<pre class="r"><code>a[[2]] #The second list element</code></pre>
<pre><code>## [,1] [,2]
## [1,] 1 3
## [2,] 2 4</code></pre>
<pre class="r"><code>a[[3]] #The third list element</code></pre>
<pre><code>## [1] FALSE</code></pre>
Lists are most commonly used in R to represent more complex data structures and to implement a version of typing for complicated data structures that can have states and behaviors of their own (a different post will discuss object-oriented R in more detail.</div>
<br />
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Back to Mike's Big Data, Data Mining, and Analytics Tutorial</a> <br />
<br />
Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com0tag:blogger.com,1999:blog-7503353345181123469.post-3892042799634304342015-06-02T14:28:00.002-07:002015-06-02T14:32:35.460-07:00How to Install RStudio on Windows<h1>
Installation of RStudio on Windows</h1>
<h4 class="author">
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Part of Mike's Big Data, Data Mining, and Analytics Tutorial</a> </h4>
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/mALz1vn7-dI" width="560"></iframe>
<br />
RStudio Installation is pretty straightforward on Windows. First, the latest version of R needs to be installed and downloaded:<br />
<br />
<a href="http://mikemstech.blogspot.com/2015/05/how-to-install-r-on-windows.html" target="_blank">How To Install R on Windows</a><br />
<br />
Second, the latest version of RStudio needs to be downloaded from the website (<a href="http://www.rstudio.com/" rel="nofollow" target="_blank">http://www.rstudio.com</a>).<br />
<br />
Then, launching the installer, simply follow the prompts until RStudio is installed.<br />
<br />
<h4 class="author">
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Back to Mike's Big Data, Data Mining, and Analytics Tutorial</a> </h4>
<br />Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com0tag:blogger.com,1999:blog-7503353345181123469.post-70205026745868805722015-06-02T13:55:00.002-07:002015-06-02T14:05:26.011-07:00The Sample Variance and Sample Standard Deviation<div class="section level1" id="the-sample-variance-and-standard-deviation">
<h1>
The Sample Variance and Standard Deviation</h1>
<h4 class="author">
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Part of Mike's Big Data, Data Mining, and Analytics Tutorial</a> </h4>
The sample variance and standard deviation can be thought of as measures of the spread between the mean and the points in the sample. The Sample variance is defined as the sum of the squared deviations from the mean, divided by an adjusted sample size to make the statistic “unbiased”:<br />
<span class="math">\[ s^2_x = \frac{\sum_{i=1}^{n} (x_i - \bar{x})^2}{n-1} \]</span><br />
The sample standard deviation is the square root of the sample variance:<br />
<span class="math">\[ s_x = \sqrt{s_x^2} = \sqrt{\frac{\sum_{i=1}^{n} (x_i - \bar{x})^2}{n-1}} \]</span><br />
Visually, for normally distibuted data, the standard deviation can be interpreted as the arrow from the mean:<br />
<img alt="" src="data:image/png;base64,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" title="" width="672" /><br />
Another view with 1 standard deviation on either side of the mean shaded:<br />
<img alt="" src="data:image/png;base64,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" title="" width="672" /><br />
We’ll talk more about dispersion measures in the posts on random sampling distributions.<br />
There are a few guidelines to using the variance/standard deviation:<br />
<ul>
<li>The variance and standard deviation are measures of dispersion/spread for data that is measured on a <b>continuous scale</b> (As opposed to interval/ratio scale, <a href="http://mikemstech.blogspot.com/2015/06/introduction-to-data-classification.html" target="_blank">review data classification here</a>)</li>
<li>The standard deviation and variance are generally <b>not appropriate for ordinal/nominal scale data</b>. Using the variance/standard deviation on ordinal/nominal scale data can lead to meaningless statements of the form:
<ul>
<li>20% of the time we would expect to see the number of bee hives per acre less than -1.</li>
<li>“Our survey yielded a standard deviation for Satisfaction of 2, meaning that a large percentage of our survey respondents are off scale” [Satisfaction is a nominal (and at best ordinal) measure. Statistical procedures involving means and standard deviations have no place in survey analysis, most of the time…]</li>
</ul>
</li>
</ul>
Given the following 30 normally distributed values:<br />
<pre class="r"><code>#Get 30 standard normal values
x<-rnorm(30)
#Display the values
x</code></pre>
<pre><code>## [1] -1.06697008 -0.99386337 -0.04848545 -0.43638720 0.91749364
## [6] 0.28708520 1.67698404 0.97897077 -0.59151972 1.85470415
## [11] 0.54272426 -0.39907658 0.50406143 -0.18513261 0.56133026
## [16] 1.03735518 -0.04948910 1.65030321 -0.66896995 -1.02599162
## [21] -0.57135208 0.80466583 1.09648810 0.98932572 -0.16181664
## [26] -1.91483513 0.88486131 1.87548053 -0.17144575 -0.35227207</code></pre>
Displayed visually:<br />
<img alt="" src="data:image/png;base64,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" title="" width="672" /><br />
The <a href="http://mikemstech.blogspot.com/2015/05/calculating-meanaverage-in-r.html" target="_blank">sample mean</a> of the values is 0.2341409. We can construct a table for computation:<br />
<pre class="r"><code>#Calculate the variance by hand using a table
#start with our sample values
df <- data.frame(x)
#Fill the column with the mean value
df$mean_x <- rep(mean(x),length(x))
#Find the difference between the individual point and the mean
df$x_minus_mean <- df$x - df$mean_x
#Square the difference
df$x_minus_mean_squared <- df$x_minus_mean^2
#Show the table
df</code></pre>
<pre><code>## x mean_x x_minus_mean x_minus_mean_squared
## 1 -1.06697008 0.2341409 -1.30111095 1.692889710
## 2 -0.99386337 0.2341409 -1.22800424 1.507994418
## 3 -0.04848545 0.2341409 -0.28262633 0.079877642
## 4 -0.43638720 0.2341409 -0.67052807 0.449607898
## 5 0.91749364 0.2341409 0.68335276 0.466971000
## 6 0.28708520 0.2341409 0.05294432 0.002803101
## 7 1.67698404 0.2341409 1.44284316 2.081796396
## 8 0.97897077 0.2341409 0.74482989 0.554771569
## 9 -0.59151972 0.2341409 -0.82566060 0.681715423
## 10 1.85470415 0.2341409 1.62056328 2.626225331
## 11 0.54272426 0.2341409 0.30858338 0.095223705
## 12 -0.39907658 0.2341409 -0.63321746 0.400964352
## 13 0.50406143 0.2341409 0.26992055 0.072857105
## 14 -0.18513261 0.2341409 -0.41927349 0.175790256
## 15 0.56133026 0.2341409 0.32718939 0.107052895
## 16 1.03735518 0.2341409 0.80321431 0.645153222
## 17 -0.04948910 0.2341409 -0.28362998 0.080445965
## 18 1.65030321 0.2341409 1.41616233 2.005515753
## 19 -0.66896995 0.2341409 -0.90311083 0.815609166
## 20 -1.02599162 0.2341409 -1.26013250 1.587933907
## 21 -0.57135208 0.2341409 -0.80549296 0.648818902
## 22 0.80466583 0.2341409 0.57052495 0.325498719
## 23 1.09648810 0.2341409 0.86234722 0.743642728
## 24 0.98932572 0.2341409 0.75518485 0.570304155
## 25 -0.16181664 0.2341409 -0.39595751 0.156782352
## 26 -1.91483513 0.2341409 -2.14897600 4.618097858
## 27 0.88486131 0.2341409 0.65072043 0.423437081
## 28 1.87548053 0.2341409 1.64133966 2.693995874
## 29 -0.17144575 0.2341409 -0.40558662 0.164500509
## 30 -0.35227207 0.2341409 -0.58641295 0.343880149</code></pre>
<pre class="r"><code>#The variance is:
var.x <- sum(df$x_minus_mean_squared)/(length(x)-1)
var.x</code></pre>
<pre><code>## [1] 0.924833</code></pre>
<pre class="r"><code>#The standard deviation is:
sd.x <- sqrt(var.x)
sd.x</code></pre>
<pre><code>## [1] 0.9616824</code></pre>
Most software packages include a built in way to compute variances and satndard deviations. In R, it is accomplished using <code>var</code>:<br />
<pre class="r"><code>#the variance
var.x<-var(x)
var.x</code></pre>
<pre><code>## [1] 0.924833</code></pre>
<pre class="r"><code>#the standard deviation
sd.x<-sqrt(var.x)
sd.x</code></pre>
<pre><code>## [1] 0.9616824</code></pre>
<pre><code> </code></pre>
<h4 class="author">
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Back to Mike's Big Data, Data Mining, and Analytics Tutorial</a> </h4>
<pre><code> </code></pre>
</div>
Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com0tag:blogger.com,1999:blog-7503353345181123469.post-81932576504494211412015-06-01T21:04:00.003-07:002015-06-01T21:05:47.363-07:00Introduction to Data Classification<div class="section level1" id="data-classification">
<h1>
Data Classification</h1>
<h4 class="author">
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Part of Mike's Big Data, Data Mining, and Analytics Tutorial</a> </h4>
Appropriate data classification helps to answer the questions:<br />
<ul>
<li>What type of data is included in our data set?</li>
<li>What operations (equality, order, divisibility) can be applied to the data?</li>
<li>What statistical procedures are appropriate for our data set?</li>
</ul>
<div class="section level2" id="what-did-we-measure">
<h2>
What did we measure?</h2>
The first step in the data classification discussion is determining what was measured. We start out by looking at the actual characteristic being measured and determine if it can take on only a definable number of values (gender, political preference, number of hairs per 1x1 cm area of skin), or if we have a situation where we have infinitely many (and uncountable) numbers of possible values (lengths, masses, times, etc).<br />
In the former case where we have easily definable sets of possible values, then there is a good chance that we have an underlying discrete characteristic. We can generally determine with exact certainty whether a specimen is male or female, the self-reported political preference, and we can count the number of hairs per 1x1 cm area of skin.<br />
We can’t do the same with continuous characteristics (length: Is it 1 cm, or 1.1, or 1.11, or 1.11111…?). We can only measure these characteristics to a level of precision. These are good candidates for being considered “continuous” characteristics.<br />
We then need to determine at what level we have actually measured the characteristic. With gender, we can generally measure at the same level as the underlying characteristic (male/female). With ordinal measurements, we can determine that one level is higher than another, but we lack information to determine “by how much.” With continuous measurements, we can determine both order and magnitude. It is possible to measure ordinal/continuous characteristics at a lower level (ex. lengths are determined to be “ok” or “not ok” -> nominal measurement of a continuous variable).</div>
<div class="section level2" id="discrete-characteristics-and-measurements">
<h2>
Discrete Characteristics and Measurements</h2>
There are two possible categories of discrete characteristics. The first characteristic is called “nominal.” The second categorization is called “ordinal.” The key differentiator is whether the measurements at a particular level can be sorted/ordered in a meaningful way.<br />
As an example, we might determine gender for a sample of people. We can’t really say that Male > Female or Female > Male, we simply have different genders. Another example could be religion. Someone could self-identify as “Muslim”" and someone else could identify as “Christian.” Again, we can determine that the two people are different, but are unlikely to be able to determine any sort of order based on the characteristic of self-reported religion. Measurements/characteristics that can take on only <b>2 values</b> (ex. gender) are called <b>dichotomous</b>. Measurments/characteristics that can take on <b>3 or more possible values</b> (ex. religion, political preference, manufactured quality to specification) are called <b>polychotomous or polytomous</b>.<br />
The next category of discrete characteristics are those where it is possible to define order in addition to equality. This typically applies to “scale,” “count,” and “low-resolution measurement” data. Examples of scales includecertain survey scales, income scales (ex. 10K-20K, 20K-30K, 30K-40K), and reflectivity (measured as high refliectivity -> no reflectivity). Count data typically ranges from 0 (absence of an element) to a large, but not readily bounded number. Examples of count data include paint scratches per square foot, number of dents per square meter, and number of bee hives per square mile. Data measured at the ordinal level can be determined to be equal or unequal and can be ordered (ex. higher counts are higher than lower counts, income range of 20K-30K is higher than the 10K-20K range), but the data might be in unequal increments.<br />
Count data is special in that both ordinal statistical procedures and procedures typically applied to continuous data may be used. Sometimes you might encounter count data referred to as “absolute” data.<br />
Data measured at the nominal and ordinal levels is often referred to as “qualitative” data.</div>
<div class="section level2" id="continuous-characteristics-and-measurements">
<h2>
Continuous Characteristics and Measurements</h2>
Continuous data allows us to determine equality, order, and magnitude. Magnitude allows us to concretely say how much bigger one value is from the next, and we have equal intervals between possible values (and often, infinitely many possible values). As an example, if we measure an object to be 3 meters and another object to be 1 meter, we have meaning when we say that the first object is three times larger than the second object.<br />
Data measured at the continuous level is often referred to as “quantitative” data.</div>
<div class="section level2" id="takeaways">
<h2>
Takeaways</h2>
Appropriate data classification is critically important because without it none (or very little) of the analysis will be correct. It is important to note that it is generally not possible to measure an attribute at a higher scale than the scale represented by the underlying attribute (ex. It would be meaningless to calculate gender on a 0-100 point scale if it is indeed 2 valued).<br />
<br />
Virtually all of the other posts that I write involving statistical procedures will include at least a brief discussion of data classification, primarily due to its importance in performing the correct analysis and obtaining the correct result.<br />
<br />
<h4 class="author">
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Return to Mike's Big Data, Data Mining, and Analytics Tutorial</a> </h4>
</div>
</div>
Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com0tag:blogger.com,1999:blog-7503353345181123469.post-67638347478864700252015-06-01T11:48:00.002-07:002015-06-01T21:29:28.889-07:00The Sample Mode<div class="section level1" id="the-sample-mode">
<h1>
The Sample Mode</h1>
<h4 class="author">
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Part of Mike's Big Data, Data Mining, and Analytics Tutorial</a> </h4>
The sample mode is a statistic that reflects which value occurs most frequently in the sample. It is a suitable measure of center for nominal data. It can also be used on higher level data (<a href="http://mikemstech.blogspot.com/2015/06/introduction-to-data-classification.html" target="_blank">ordinal and continuous</a>).<br />
Given the following 20 values generated between 1 and 3:<br />
<pre class="r"><code>#Get 20 random integer values uniformly distributed between 1 and 3
x<-round(runif(20,1,3))
#sort and display the values
x<-x[order(x)]
x</code></pre>
<pre><code>## [1] 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3</code></pre>
These values can be summarized as frequencies of individual values (frequency referring to the number [count] of times each individual value appears in the set):<br />
<pre class="r"><code>x_freq<-table(x)
x_freq</code></pre>
<pre><code>## x
## 1 2 3
## 4 13 3</code></pre>
The mean can be determined by finding which table values are the highest:<br />
<pre class="r"><code>names(x_freq)[which(x_freq == max(x_freq))]</code></pre>
<pre><code>## [1] "2"</code></pre>
Assessed graphically, the mode is the tallest bar:<br />
<img alt="" src="data:image/png;base64,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" title="" width="672" /><br />
R does not have a built in function to find the mode; however it is easy using the combination of <code>table</code> and <code>which</code><br />
<pre class="r"><code>names(x_freq)[which(x_freq == max(x_freq))]</code></pre>
<pre><code>## [1] "2"</code></pre>
<pre><code> </code></pre>
<h4 class="author">
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Back to Mike's Big Data, Data Mining, and Analytics Tutorial</a> </h4>
<pre><code> </code></pre>
</div>
Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com0tag:blogger.com,1999:blog-7503353345181123469.post-41220987731030237712015-05-31T18:32:00.002-07:002015-06-01T21:29:46.208-07:00Sample Median Calculation<h1>
Sample Median Calculation</h1>
<h4 class="author">
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Part of Mike's Big Data, Data Mining, and Analytics Tutorial</a> </h4>
The median is a measure of center that cuts a distribution of values into two equal parts representing 50% of the sample. The notation that I will use when talking about medians (and percentiles) is the \( x_p \) notation, where \( x \) represents a sample value and \( p \) represents the percentage of the sample that is less than \( x \). In our case the median will be denoted as \( x_{.5} \) or \( x_{50\%} \). When we calculate the median, we are looking at finding the “middle” value instead of the “balancing” value, though in the case of data that is symmetrically distributed, the mean and median tend to be pretty close or the same.<br />
There are a few guidelines to using the median:<br />
<ul>
<li>The median is a measure of center for data that is measured on an <b>ordinal scale</b> (<a href="http://mikemstech.blogspot.com/2015/06/introduction-to-data-classification.html" target="_blank">Review data classification here</a>)</li>
<li>The median is <b>not appropriate for nominal scale data</b>; however continuous scale data can be treated as ordinal and statistical procedures using the median can be used on continuous scale data. </li>
</ul>
For these examples, we will use the following two samples:<br />
<pre><code class="r">#Get 10 random integer values uniformly distributed between 1 and 100
x_even<-round(runif(10,1,100))
#sort and display the values
x_even<-x_even[order(x_even)]
x_even
</code></pre>
<pre><code>## [1] 11 17 44 56 69 71 74 75 78 94
</code></pre>
<pre><code class="r">#Create an odd size sample that is mostly equivalent to the even size sample
x_odd<-sample(x_even,9)
x_odd<-x_odd[order(x_odd)]
x_odd
</code></pre>
<pre><code>## [1] 11 44 56 69 71 74 75 78 94
</code></pre>
The computation of the median varies if the sample size has an odd or even number. In the case of the odd size sample (sample size is not cleanly divisible by 2), the median is exactly the middle value.<br />
<h2>
Odd-Size Sample Median Calculation</h2>
As a reminder, these are the sorted values from the odd-size sample:<br />
<pre><code class="r">x_odd
</code></pre>
<pre><code>## [1] 11 44 56 69 71 74 75 78 94
</code></pre>
If we have sorted the sample from smallest to largest and it has an odd size, we want the \( \frac{n+1}{2} \)th element. In the case of our odd-size sample, we want the \( \frac{9+1}{2} = 5 \)th element. <br />
Using this definition, we can directly get the median:<br />
<pre><code class="r">x_odd[((length(x_odd)+1)/2)]
</code></pre>
<pre><code>## [1] 71
</code></pre>
<pre><code class="r">#This is the same as
x_odd[5]
</code></pre>
<pre><code>## [1] 71
</code></pre>
We can also use the median function:<br />
<pre><code class="r">median(x_odd)
</code></pre>
<pre><code>## [1] 71
</code></pre>
The median value <b>71</b> cuts 4 values off below (11, 44, 56, and 69) and 4 values above (74, 75, 78, and 94), leading us to have 50% of the sample above and below <b>71</b>.<br />
<h2>
Even-Size Sample Median Calculation</h2>
As a reminder, these are the sorted values from the even-size sample:<br />
<pre><code class="r">x_even
</code></pre>
<pre><code>## [1] 11 17 44 56 69 71 74 75 78 94
</code></pre>
If we have a situation where our sample has an even size, we can't cleanly pick out a “middle” value from which to use as the median. In this case, we want to compute a value that causes 50% of the sample to be above and below. In order to do this, we average the middle two numbers. <br />
If we have sorted the sample from smallest to largest and it has an even size, we want to find the midpoint between the \( \frac{n}{2} \)th and \( \frac{n+2}{2} \)th element. In the case of our sample with size 10, we want to calculate the midpoint between the \( \frac{10}{2} = 5 \)th and the \( \frac{12}{2} = 6 \)th elements. In the case of our even size sample, the median is the midpoint between 69 and 71.<br />
Using this definition, we can directly get the median:<br />
<pre><code class="r">(x_even[((length(x_even))/2)] + x_even[((length(x_even)+2)/2)])/2
</code></pre>
<pre><code>## [1] 70
</code></pre>
<pre><code class="r">#This is the same as
(x_even[5]+x_even[6])/2
</code></pre>
<pre><code>## [1] 70
</code></pre>
We can also use the median function:<br />
<pre><code class="r">median(x_even)
</code></pre>
<pre><code>## [1] 70
</code></pre>
The median value <b>70</b> cuts 5 values off below (11, 17, 44, 56, and 69) and 5 values above (71, 74, 75, 78, and 94), leading us to have 50% of the sample above and below <b>70</b>.<br />
<br />
<h4 class="author">
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Back To Mike's Big Data, Data Mining, and Analytics Tutorial</a> </h4>
Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com0tag:blogger.com,1999:blog-7503353345181123469.post-68669765444552022292015-05-29T14:42:00.002-07:002015-06-02T14:33:22.103-07:00How to Install R on Windows<h1>
Installation of R on Windows</h1>
<h4 class="author">
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Part of Mike's Big Data, Data Mining, and Analytics Tutorial</a> </h4>
<h1>
</h1>
<iframe allowfullscreen="" frameborder="0" height="315" src="https://www.youtube.com/embed/6-TUzRJhyG8" width="560"></iframe>
<br />
R Installation is pretty straightforward on Windows. First, the latest version of R needs to be downloaded from CRAN (<a href="http://cran.r-project.org/" rel="nofollow" target="_blank">http://cran.r-project.org</a>).<br />
<br />
Then, launching the installer, simply follow the prompts until R is installed.<br />
<br />
Next, it might be a good idea to install RStudio:<br />
<br />
<a href="http://mikemstech.blogspot.com/2015/06/how-to-install-rstudio-on-windows.html" target="_blank">How to Install RStudio on Windows </a><br />
<br />
<h4 class="author">
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Back to Mike's Big Data, Data Mining, and Analytics Tutorial</a> </h4>
<br />Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com0tag:blogger.com,1999:blog-7503353345181123469.post-78815849438451327382015-05-29T14:13:00.002-07:002015-06-01T21:30:22.171-07:00Calculating a Mean/Average in R<style type="text/css">
.main-container {
max-width: 940px;
margin-left: auto;
margin-right: auto;
}
code {
color: inherit;
background-color: rgba(0, 0, 0, 0.04);
}
img {
max-width:100%;
height: auto;
}
</style>
<br />
<div class="container-fluid main-container">
<div id="header">
<h1 class="title">
Mean/Average Values in R</h1>
<h4 class="author">
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Part of Mike's Big Data, Data Mining, and Analytics Tutorial</a> </h4>
</div>
The mean can be thought of as a “balancing point” between values smaller than the mean and larger than the mean. It can also be thought of as a “typical value.” Statisticians/data scientists may refer to the mean of a set as the ‘location’ parameter for a set.<br />
The mean or average of a set of data values is defined as the sum of the values divided by the count of values.<br />
<span class="math">\[ \bar{x} = \frac{\sum_{i=1}^{n} x_i}{n} \]</span><br />
There are a few guidelines to using the mean:<br />
<ul>
<li>The mean is a measure of center for data that is measured on a <b>continuous scale</b> (<a href="http://mikemstech.blogspot.com/2015/06/introduction-to-data-classification.html" target="_blank">Review data classification here</a>)</li>
<li>The mean is <b>not appropriate for ordinal/nominal scale data</b>. Using the mean leads to meaningless statements of the form:
<ul>
<li>“The average gender in the world is somewhere between male and female (1.2)”</li>
<li>“The average satisfaction was 2.3”</li>
</ul>
</li>
</ul>
Given the following 10 values generated between 1 and 20:<br />
<pre class="r"><code>#Get 10 random integer values uniformly distributed between 1 and 20
x<-round(runif(10,1,20))
#sort and display the values
x<-x[order(x)]
x</code></pre>
<pre><code>## [1] 1 3 3 10 11 14 15 16 19 19</code></pre>
These values can be summarized as frequencies of individual values (frequency referring to the number [count] of times each individual value appears in the set):<br />
<pre class="r"><code>table(x)</code></pre>
<pre><code>## x
## 1 3 10 11 14 15 16 19
## 1 2 1 1 1 1 1 2</code></pre>
This table of values can be visualized in a histogram (a bar chart that shows the relative frequency of each value or a summarization within ranges of values [called bins]). In the chart below, the red line is drawn at the mean of the values:<br />
<img alt="" src="data:image/png;base64,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Pu+ffDn871uXsPyhFw9X3u63+O5joKtX/N761atdf3zjvbFThYBev+aA7r9yc/KA3P3B146eW/6AgL79JNLz13/5P/v/+OMkoO88ifTauqfvXrx48+2Anl7xu+vXr3Z1OO+NnSoE9Pqt34X/2YB+/3Jwa++oJW++jKktoAcf0rH+MqaXvfzH4js3Xmi/vIRlWF//z+T4Ha5vB/T0it9dv361R7fhX7w9dqoQ0Ot3HNDd8X46ye9VbPHS+MOXPO699UL6toAuXwb//IjgSkD3b4Q8/HSkkxfSLy/htV4vXz66L/36/zDbAT2+4vfXr17tc9j3b4D9ejTIjbFThIBev6OAPj/Bexyj9YrdvTZid6qPbys9X9rqWznbArq4vJdYrf1Kj5c7uWsfILdxCbufefnlbwdN+4mXMZ1e8fvrV692+Rap+/2w3x07RQjo9Vt9If3JO7XXK3b0SRen78g8+giigye0GwO6T9TeWkDvl/s5/u/rl3D6zPf+vvTS15VrWzi+4nfXr1/tyR/P/qGVk++kHgG9fqsBXbxx8s2KHS1eebZj++PsWgO6zMjTp92tBXR53/z4gjcuYfn89qf/sRatf9u6toXjK35//erVHr/6ae1TBL0fqSwBvX5rAV1+lO8ZrwNdvSG0+YHKrQFdXPfX75tJuzv6yU6fpT++hEWzPv3x+rkdr/v49vrypO2Anlzx++tXr/YwvS8X9/7YqUBAr99JQFfv7r6RvNvjZcc2fqVHc0AXT6dsB/T4SZaj/75yCfurefyuZcl2gfv64/gxjPWdnz678/761avdJ/Twet4dO5cnoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECChAkoABBAgoQJKAAQQIKECSgAEECyuz+9a9L/wQMq3dAb29efO58TRAjoIR1DejdzSENpSABJaxjQL9/uTn2y5/9rg5iBJSwfgH95/fDYv7928O///pXt+uDGAElrF9A709y+ZjUb92uD2IElLB+Ab09vcP+cCPUw6BUI6CEdQvow83NrydfvHMfnnIElLBuAX24tXl6d/3e00iUI6CECSizE1DC3IVndgJKmCeRmJ2AEpb9MqbTW6VwWQJKWPIL6T0ESjkCSljHt3I+FfPQpz/6XR3ECChhXT9M5Paonx4ApSABJczH2TE7ASXMByozOwElTECZnYASJqDMTkAJE1BmJ6CEpQb0+5e3Xgh68qKnm4wfbuVaf07Cz0YKAS1jvNNYO6Ddf7rwH5iAXg8BLWLE01gooKcyAvq/YwT0eghoESOextIdEFASCGgRI57G0h0QUBIIaBEjnsbSHRBQEghoESOextIdEFASCGgRI57G0h0QUBIIaBEjnsau1/z9y83Bpyr/87tn4SlHQIsY8TT2vOaXT2Lafw6TgFKQgBYx4mnseM2vn2T3ciNUQClIQIsY8TT2u+bH+++Pv9j47rWgAkpBAlrEiKex52/lfP4FHo+/HGlXUAGlIAEtYsTT2PP3wu8f+7x9LqiAUpCAFjHiaex2zX//9nQHfue5oAJKQQJaxIinMSegjwX9LKCUJKBFjHgakwL6+DjoVwGlIgEtYsTTmPIY6O5fb74JKAUJaBEjnsZ+13x3s7wJ+viqpk//S0CpR0CLGPE09n0d6NfFv98/vaZeQKlGQIsY8TR2vOa7g7dxPhdUQKlGQIsY8TT2vObHgi5vgz7eJhVQqhHQIkY8jV2v+Z/fDwL6mFQBpRoBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNNYugMCSgIBLWLE01i6AwJKAgEtYsTTWLoDAkoCAS1ixNOYcs1//3bz4Ne/zl0noCQQ0CJGPI3drvkhmi/FvL159vnMyxBQEghoESOexoSA7vt59o1QASWBgBYx4mnsH9D7h3B+ff7KmbdBBZQEAlrEiKexe0Af/veXP5+/dnfz6Y9zLkNASSCgRYx4GrsH9P759uejf34/7yaogJJAQIsY8TR2D+jBrc678x4FFVASCGgRI57G7gG9XQb0/vXu/M8QUBIIaBEjnsaEgC6aKaDUI6BFjHgac+/CCyj1CGgRI57GjCeRvu2/eOsxUMoR0CJGPI3dA7p85n35jPzPEFASCGgRI57GngG9eXoJ/b6aDyk97x68gJJBQIsY8TT2DuiTp2w+vaPz27vrlgSUBAJaxIinsec17xv6FNC7s/spoGQQ0CJGPI39r/n7l5en48/9MCYBJYOAFjHiaSzdAQElgYAWMeJpLN0BASWBgBYx4mks3QEBJYGAFjHiaSzdAQElgYAWMeJpTL3m71/eeiHozYreP9GIf2R8MAEtYsTTKKDD/ZHxwQS0iBFPY6GAnhJQEghoESOextIdEFASCGgRI57G0h0QUBIIaBEjnsbSHRBQEghoESOextIdEFASCGgRI57G0h0QUBIIaBEjnsbSHRBQEghoESOextIdEFASCGgRI57G0h0QUBIIaBEjnsbSHRBQEghoESOexpRf6bHgnUhUI6BFjHgaBXS4PzI+mIAWMeJp7HfN378IKCMQ0CJGPI0dr/nxNuhZvwb+hICSQECLGPE0dv6tnJ/+aLkAASWBgBYx4mnses0vv5AzSkBJIKBFjHga+17z3dm/Cv6AgJJAQIsY8TT2veaHO/EtN0EFlAQCWsSIp7HzNbfdBBVQEghoESOextIdEFASCGgRI57G0h0QUBIIaBEjnsbSHRBQEghoESOextIdEFASCGgRI57G0h0QUBIIaBEjnsbSHRBQEghoESOextIdEFASCGgRI57G0h0QUBIIaBEjnsbSHRBQEghoESOextIdEFASCGgRI57G0h0QUBIIaBEjnsbSHRBQEghoESOextIdEFASCGgRI57G0h0QUBIIaBEjnsbSHRBQEghoESOextIdEFASCGgRI57G0h0QUBIIaBEjnsbSHRBQEghoESOextIdEFASCGgRI57G0h0QUBIIaBEjnsbSHRBQEghoESOextIdEFASCGgRI57G0h0QUBIIaBEjnsbSHRBQEghoESOextIdEFASCGgRI57G0h0QUBIIaBEjnsbSHRBQEghoESOextIdEFASCGgRI57G0h0QUBIIaBEjnsbSHRBQEghoESOextIdEFASCGgRI57G0h0QUBIIaBEjnsbSHRBQEghoESOextIdEFASCGgRI57G0h0QUBIIaBEjnsbSHRBQEghoESOextIdEFASCGgRI57G0h0QUBIIaBEjnsbSHRBQEghoESOextIdEFASCGgRI57G0h0QUBIIaBEjnsbSHRBQEghoESOextIdEFASCGgRI57G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FCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIEFCBIQAGCBBQgSEABggQUIEhAAYIElJF9/3Lzy5+P//DP7zef/rj0T8N0BJSh3d3cfF3+L2QSUIb2fMvz799ufv3r0j8L8xFQxnZ/c/P5x49bd+C5BAFlcI/t3FUUsgkog3u49/6ff39+KglyCSiju7t58O3SPwVTElBG98/v7sBzIQLK8G4FlAsRUEZ37y48lyKgDO7hHvx/+q9eBcpFCCiDu3u4+XnvfUhchIAytu9fHm59eic8lyGgjG33HqSHjHoeiXwCytBe3oN063kkLkBAGdk/L+9B8mkiXIKAMrLXT7HzeXZcgIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBAkoQJCAAgQJKECQgAIECShAkIACBP1/uuquf0FOOuYAAAAASUVORK5CYII=" title="" width="672" /><br />
The chart below shows the same information, but using R’s default binning/summarization algorithm:<br />
<img alt="" src="data:image/png;base64,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" title="" width="672" /><br />
The mean of this set is:<br />
<span class="math">\[ \bar{x} = \frac{\sum_{i=1}^{n} x_i}{n} \]</span><br />
<span class="math">\[ \bar{x} = \frac{1 + 3 + 3+ 10+ 11+ 14+ 15+ 16+ 19+ 19}{10} \]</span><br />
<span class="math">\[ \bar{x} = \frac{111}{10} \]</span><br />
<span class="math">\[ \bar{x} = 11.1 \]</span><br />
In R, it is easy to find the average of a set of numbers using the built-in mean function:<br />
<pre class="r"><code>mean(x)</code></pre>
<pre><code>## [1] 11.1</code></pre>
It is also possible to write (mostly) equivalent, but less efficient functions that compute the mean/average in R:<br />
<pre class="r"><code>average<-function(x) {
sum(x)/length(x)
}
average(x)</code></pre>
<pre><code>## [1] 11.1</code></pre>
Or even worse performance-wise, but demonstrating the mechanics of the for loop…<br />
<pre class="r"><code>average<-function(x) {
sum_x<-0
count_x<-0
for (i in 1:length(x)) {
sum_x<-sum_x+x[i]
count_x<-count_x + 1
}
sum_x/count_x
}
average(x)</code></pre>
<pre><code>## [1] 11.1</code></pre>
There’s really not a good reason in most cases to write your own function that calculates the mean, but you may find a special reason in doing so…<br />
<br />
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Back to Mike's Big Data, Data Mining, and Analytics Tutorial</a> </div>
Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com0tag:blogger.com,1999:blog-7503353345181123469.post-30891713553643257202014-07-23T00:06:00.003-07:002015-05-29T13:43:49.128-07:00The Linear Regression Model y = a + bxThis is part of <a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Mike's Big Data, Data Mining, and Analytics Tutorial</a> <a href="http://mikemstech.blogspot.com/2014/07/mikes-regression-and-model-fitting.html" target="_blank"></a> <br />
<br />
Linear Regression of the form \( y = a + b x \) is the typical "go to" regression method that people generally use. It is often taught in many basic statistics and non-statistical mathematics courses. There are a large number of problems where linear regression of the form \( y = a + bx \) provides a correct answer and a large number of problems where it provides an acceptable answer. In future posts, we'll look at other models that may fit other data better.<br />
<br />
By definition, the line \( y = a + b x \) is a straight line with the following characteristics:<br />
<br />
<ul>
<li>The y axis intercept (the model evaluated at \( x = 0 \), in mathematical notation \( y = a +bx |_{x=0} \) is equal to \(a\).</li>
<li>The x axis intercept (the model evaluated at \( y = 0 \) and solved for x, in mathematical notation \( y = a + bx|_{y=0} \) is equal to \( \frac{-a}{b} \).</li>
<li>The slope of the line is equal to \( b \). This can be shown with either the typical "rise over run" or using the first derivative (there's really not a lot of distinction here, but I recognize that some readers may not have a calculus background).</li>
<ul>
<li>Let's look at the "rise over run" part first. To make the math easy, let's assume that we want to compare the change in y (call the change in y \( \sigma \) when we make some arbitrary change in x ( let's say we add \(\delta\) )$$ y = a + b x $$ $$ y + \sigma = a + b(x + \delta) $$ Now let's look at the change: $$ y + \sigma - y = a + b (x + \delta) - (a + bx ) $$ Simplifying, we get to $$ \sigma = b \delta $$ . The "rise over run" is equal to $$ \frac{\sigma}{\delta} = b$$. To take this a step further, assume \(\delta = 1\), the change is exactly \(b\)</li>
<li>Going back to basic first semester calculus, this can be shown using the first derivative (for non-calculus readers, the derivative is a measure of how quickly the slope of a particular curve changes) $$ \frac{d}{dx} a + bx = b $$</li>
</ul>
</ul>
<b><br /> How do I calculate \( a \) and \( b \) for the line \( y = a + b x \)?<br /> </b><br />
Let's get into the calculation of the \( a \) and \( b \) values for the \( y= a + b x \) model. Firstly, we need to set up a matrix \( A \) with the relevant transformations of our input data. We'll get to that in a minute below. First, let's answer the question "How do I find a line between 2 points in the \( (x,y) \) plane?"<br />
<br />
For a second, let's consider two of our points in our data: \( (x_1, y_1 )\) and \( (x_2, y_2 )\). If we used just the two points, we can calculate \( a \) and \( b \) directly. First, let's define a couple of equations:<br />
<br />
$$ y_1 = a + b x_1 $$ <br />
$$ y_2 = a + b x_2 $$<br />
<br />
Doing a little bit of reorganization, let's solve for b first:<br />
<br />
$$ y_2 - y_1 = a + b x_2 - (a + b x_1) $$<br />
<br />
\( a \) cancels out and the right side simplifies to \( b x_2 - b x_1 = b ( x_2 - x_1 ) \). Solving for \( b \):<br />
<br />
$$ b = \frac{y_2 - y_1}{x_2 - x_1} $$<br />
<br />
Either equation can be used to solve for \( a \). Using the first, \( a = y_1 - b x_1 \), using the second equation, \( a = y_2 - b x_2 \). Now, let's consider a matrix solution to the same problem. We'll set up matrices to solve the equation<br />
$$ A z = B $$<br />
<br />
Here, lets define \( z \) and \( B \). \( z \) contains our unknowns... namely \( a \) and \( b \). \( B \) contains our Y values, namely \( y_1 \) and \( y_2 \)<br />
<br />
$$ z = \begin{pmatrix} a \\ b \end {pmatrix} \quad \quad B = \begin{pmatrix} y_1 \\ y_2 \end{pmatrix} $$<br />
<br />
Let's take a little bit of extra time to talk about \( A \). Each column in \( A \) has to be a function of the data \( x_i \). Let's go back to our original equations and rewrite them slightly...<br />
<br />
$$ y_1 = a + b x_1 \iff a \mathbf{x_1^0} + b x_1^{\mathbf{1}} $$ <br />
$$ y_2 = a + b x_2 \iff a \mathbf{x_2^0} + b x_2^{\mathbf{1}} $$<br />
<br />
We know generally that almost anything raised to the "zero" power is equal to 1. Anything raised to the first power is equal to itself. Let's put our rewritten equations into their equivalent matrix format:<br />
<br />
$$ A = \begin{pmatrix} x_1^0 & x_1^1 \\ x_2^0 & x_2^1 \end{pmatrix} \iff \begin{pmatrix} 1 & x_1 \\ 1 & x_2 \end{pmatrix} $$<br />
<br />
Our resulting matrix \( A \) contains all of the data. The first column contains the data raised to the 0 power and the second column contains the data raised to the first power. Let's write our system of equations out in matrix form:<br />
<br />
$$ A z = B $$<br />
$$ \begin{pmatrix} 1 & x_1 \\ 1 & x_2 \end{pmatrix} \begin{pmatrix} a \\ b \end{pmatrix} = \begin{pmatrix} y_1 \\ y_2 \end{pmatrix} $$<br />
<br />
This is a 2x2 system, so we can look up the inverse of a 2x2 matrix on my post here: <a class="moz-txt-link-freetext" href="http://mikemstech.blogspot.com/2014/07/inverse-of-2x2-matrix.html" target="_blank">http://mikemstech.blogspot.com/2014/07/inverse-of-2x2-matrix.html</a>. We'll use the fact that <br />
<br />
$$(A^{-1}) A z = (A^{-1}) B $$<br />
$$ z = (A^{-1}) B $$<br />
<br />
Calculating \( A^{-1} B \) yields<br />
<br />
$$ \begin{pmatrix} \frac{y_1 x_2 - y_2 x_1}{ x_2 - x_1 } \\ \frac{y_2 - y_1}{x_2-x_1} \end{pmatrix} $$<br />
<br />
Namely, \( a = \frac{y_1 x_2 - y_2 x_1}{ x_2 - x_1 } \) and \( b = \frac{y_2 - y_1}{x_2-x_1} \) for our two point example. A fair amount of algebra can be used to show the equivalence of the answers above and the answers to the matrix equations for \( a \) ( \( b \) is the same with either approach). <br />
<br />
<b>How to find \( a \) and \( b \) with more than two points.</b><br />
<br />
We used the two point example as a conceptual introduction to how we set up the matrices, and now we want to consider the case with more than 2 points. We set up our system of equations using the least squares approach (minimizing the total sum of squared error for the model generated).<br />
<br />
$$ A^T A z = A^T B $$<br />
<br />
In this case,<br />
$$ A = \begin{pmatrix} 1 & x_1 \\ \vdots & \vdots \\ 1 & x_n \end{pmatrix} \quad z = \begin{pmatrix} a \\ b \end{pmatrix} \quad B = \begin{pmatrix} y_1 \\ \vdots \\ y_n \end{pmatrix} $$<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Now for the calculation of \( A^T A \) and \( A^T B \)<br />
<br />
$$ A^T A = \begin{pmatrix} \sum \limits _{i = 1}^n 1 & \sum \limits _{i=1}^n x_i \\ \sum \limits _{i=1}^n x_i & \sum \limits _{i=1}^n x_i^2 \end{pmatrix} = \begin{pmatrix} n & \sum \limits _{i=1}^n x_i \\ \sum \limits _{i=1}^n x_i & \sum \limits _{i=1}^n x_i^2 \end{pmatrix} \quad \quad A^T B = \begin{pmatrix} \sum \limits _{i=1}^n y_i \\ \sum \limits _{i=1}^n x_i \cdot y_i \end{pmatrix} $$ <br />
<br />
<br />
This is a 2x2 system, so we can look up the inverse of a 2x2 matrix on my post here: <a class="moz-txt-link-freetext" href="http://mikemstech.blogspot.com/2014/07/inverse-of-2x2-matrix.html" target="_blank">http://mikemstech.blogspot.com/2014/07/inverse-of-2x2-matrix.html</a>. Again, we'll use the following:<br />
<br />
$$ (A^TA)^{-1} A^TA z = (A^TA)^{-1} B $$<br />
$$ z = (A^TA)^{-1} B $$<br />
<br />
Finding the inverse of \( A^T A \) yields<br />
<br />
$$ (A^T A)^{-1} = \frac { 1 } { n \sum \limits _{i=1}^n x_i^2 - \left ( \sum \limits_{i=1}^n x_i \right )^2 } \begin{bmatrix} \sum \limits_{i=1}^n x_i^2 & -1 \cdot \sum \limits _{i=1}^n x_i \\ -1 \cdot \sum \limits _{i=1}^n x_i & n \end{bmatrix}$$<br />
<br />
Calculating \( (A^T A)^{-1} B \) yields<br />
<br />
$$ \begin{pmatrix} (A^T A)^{-1} B = \frac{\sum \limits_{i=1}^n x_i^2 \sum \limits_{i=1}^n y_i - \sum \limits_{i=1}^n x_i \sum \limits_{i=1}^n x_i y_i}{n \sum \limits _{i=1}^n x_i^2 - \left ( \sum \limits_{i=1}^n x_i \right )^2 } \\ \frac{n \sum \limits_{i=1}^n x_i y_i - \sum \limits_{i=1}^n y_i \sum \limits_{i=1}^n x_i }{n \sum \limits _{i=1}^n x_i^2 - \left ( \sum \limits_{i=1}^n x_i \right )^2 } \end{pmatrix} $$<br />
<br />
So, for the regression model \( y = a + bx \)<br />
$$ a = \frac{\sum \limits_{i=1}^n x_i^2 \sum \limits_{i=1}^n y_i - \sum \limits_{i=1}^n x_i \sum \limits_{i=1}^n x_i y_i}{n \sum \limits _{i=1}^n x_i^2 - \left ( \sum \limits_{i=1}^n x_i \right )^2 } \quad \quad b = \frac{n \sum \limits_{i=1}^n x_i y_i - \sum \limits_{i=1}^n y_i \sum \limits_{i=1}^n x_i }{n \sum \limits _{i=1}^n x_i^2 - \left ( \sum \limits_{i=1}^n x_i \right )^2 } $$<br />
<br />
<b>Example: Calculate A Regression Line for 3 Collinear Points<br /> </b><br />
Problem statement: Calculate a line in the form \( y = a + b x \) that goes through the points \( (1,5),(2,7),(3,9) \).<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkMI1B15DFkdmax4WTF310MOLaOyvi_uiPTovf_y9mcRbrD7zzP5nMCwDqQLMBypMbbUmttv49jVZSZMWr1w0LIbJD9B6Rky3bwlkl24OAhJ1uUeLjPSvIvAkPDR1solI24TYbiuqh1O0/s1600/bghfbjcg-714757.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6039146278612367122" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjkMI1B15DFkdmax4WTF310MOLaOyvi_uiPTovf_y9mcRbrD7zzP5nMCwDqQLMBypMbbUmttv49jVZSZMWr1w0LIbJD9B6Rky3bwlkl24OAhJ1uUeLjPSvIvAkPDR1solI24TYbiuqh1O0/s320/bghfbjcg-714757.png" /></a><br />
<br />
We derived the formula above, so now we need to focus on calculation. <br />
<br />
$$ a = \frac{\sum \limits_{i=1}^n x_i^2 \sum \limits_{i=1}^n y_i - \sum \limits_{i=1}^n x_i \sum \limits_{i=1}^n x_i y_i}{n \sum \limits _{i=1}^n x_i^2 - \left ( \sum \limits_{i=1}^n x_i \right )^2 } \quad \quad b = \frac{n \sum \limits_{i=1}^n x_i y_i - \sum \limits_{i=1}^n y_i \sum \limits_{i=1}^n x_i }{n \sum \limits _{i=1}^n x_i^2 - \left ( \sum \limits_{i=1}^n x_i \right )^2 } $$<br />
<br />
If calculating by hand, the easiest way is to organize the calculationsin a table.<br />
<br />
<table border="1" cellpadding="2" cellspacing="2" style="width: 100%px;"> <tbody>
<tr> <td valign="top">Point</td> <td valign="top">\( x_i \)</td> <td valign="top">\( y_i \)</td> <td valign="top">\( x_i^2 \)</td> <td valign="top">\( x_i y_i \)</td> </tr>
<tr> <td valign="top">\((1,5)\)</td> <td valign="top">1</td> <td valign="top">5</td> <td valign="top">1</td> <td valign="top">5</td> </tr>
<tr> <td valign="top">\((2,7)\)</td> <td valign="top">2</td> <td valign="top">7</td> <td valign="top">4</td> <td valign="top">14</td> </tr>
<tr> <td valign="top">\((3,9)\)</td> <td valign="top">3</td> <td valign="top">9</td> <td valign="top">9</td> <td valign="top">27</td> </tr>
<tr> <td valign="top"><br /></td> <td valign="top">\( \sum \limits_{i=1}^3 x_i = 1 + 2 + 3 = 6 \)</td> <td valign="top">\( \sum \limits_{i=1}^3 y_i = 5 + 7 + 9 = 21 \)</td> <td valign="top">\( \sum \limits_{i=1}^3 x_i^2 = 1 + 4 + 9 = 14 \)</td> <td valign="top">\( \sum \limits_{i=1}^3 x_i y_i = 5 + 14 + 27 = 46 \)</td> </tr>
</tbody> </table>
Now, for the calculation of \( a \)<br />
$$ a = \frac{\sum \limits_{i=1}^n x_i^2 \sum \limits_{i=1}^n y_i - \sum \limits_{i=1}^n x_i \sum \limits_{i=1}^n x_i y_i}{n \sum \limits _{i=1}^n x_i^2 - \left ( \sum \limits_{i=1}^n x_i \right )^2 } = \frac{ 14 \cdot 21 - 6 \cdot 46 }{ 3 \cdot 14 - 6^2 } = \frac{18}{6} = 3 $$<br />
<br />
Now, for the calculation of \( b \)<br />
<br />
$$ b = \frac{n \sum \limits_{i=1}^n x_i y_i - \sum \limits_{i=1}^n y_i \sum \limits_{i=1}^n x_i }{n \sum \limits _{i=1}^n x_i^2 - \left ( \sum \limits_{i=1}^n x_i \right )^2 } = \frac{3 \cdot 46 - 21 \cdot 6}{3 \cdot 14 - 6^2 } = \frac{12}{6} = 2 $$<br />
<br />
The ending solution for \( y= a + b x \) that fits these three points is \( y = 3 + 2 x \)<br />
<br />
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Back to Mike's Big Data, Data Mining, and Analytics Tutorial</a> Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com0tag:blogger.com,1999:blog-7503353345181123469.post-62953611878684932462014-07-20T23:16:00.003-07:002015-06-15T13:51:53.826-07:00Mike's Big Data, Data Mining, and Analytics TutorialI've been looking for a good tutorial covering the topics of "Statistics," "Big Data," "Data Science," "Data Mining", and "Analytics" for a long time. Needless to say, I've found a lot of piecemeal information about the subjects out on the Internet, but I haven't seen anyone develop a good centralized tutorial for this information.<br />
<br />
This tutorial is meant to provide a starting point for people who are interested in learning the topics and collected best practices from what I've learned over the past 11 years or so (Including introductory functions, statistics, trigonometry, pre-calculus, calculus, differential equations, linear algebra, intermediate and advanced applied statistics, data mining, machine learning, and analytics).<br />
<br />
This tutorial is generally an "applied" tutorial (as opposed to a mathematical/theoretical statistics tutorial) and aims to help people become better at understanding statistics and performing analyses. Almost everywhere, there is a pervasive misuse of statistics and the only effective tool to fight it is knowledge.<br />
<br />
Below are a list of topics that are either documented or are in-progress currently:<br />
<ul>
<li>Introductory Statistics</li>
<ul>
<li><a href="http://mikemstech.blogspot.com/2015/06/introduction-to-data-classification.html" target="_blank">Introduction To Data Classification</a></li>
<li>
<table style="border-collapse: collapse; border: solid 1px black;"><tbody>
<tr><th colspan="4" style="border: solid 1px black;">Descriptive Statistics</th></tr>
<tr><th style="border: solid 1px black;">Scale of Data</th><th style="border: solid 1px black;">Location</th><th style="border: solid 1px black;">Dispersion</th><th style="border: solid 1px black;">Shape</th> </tr>
<tr><th style="border: solid 1px black;">Nominal or Higher<br />
"Qualitative Data" </th><td style="border: 1px solid black; text-align: center;"><a href="http://mikemstech.blogspot.com/2015/06/the-sample-mode.html" target="_blank">Mode</a></td><td style="border: 1px solid black; text-align: center;">Range (N)</td><td style="text-align: center;">N/A</td> </tr>
<tr><th style="border: solid 1px black;">Ordinal or Higher<br />
"Qualitative/Quantitative Data" </th><td style="border: 1px solid black; text-align: center;"><a href="http://mikemstech.blogspot.com/2015/05/sample-median-calculation.html" target="_blank">Median</a></td><td style="border: 1px solid black; text-align: center;">Range (O) <br />
Quantiles <br />
Inter-Quartile Range<br />
Five-Number Summary </td><td style="border: 1px solid black; text-align: center;">N/A</td> </tr>
<tr><th style="border: solid 1px black;">Continuous (Interval/Ratio)<br />
"Quantitative Data" </th><td style="border: solid 1px black;"><div style="text-align: center;">
<a href="http://mikemstech.blogspot.com/2015/05/calculating-meanaverage-in-r.html" target="_blank">Mean/Average</a></div>
<div style="text-align: center;">
Weighted Average/Mean</div>
<div style="text-align: center;">
Harmonic Mean</div>
<div style="text-align: center;">
Geometric Mean </div>
</td><td><div style="text-align: center;">
<a href="http://mikemstech.blogspot.com/2015/06/the-sample-variance-and-sample-standard.html" target="_blank">Standard Deviation/Variance</a></div>
<div style="text-align: center;">
ADA/ADM</div>
<br /></td><td style="border: solid 1px black;"><div style="text-align: center;">
Skewness</div>
<div style="text-align: center;">
Kurtosis</div>
</td> </tr>
</tbody></table>
</li>
</ul>
<li>Regression Models (fitting one or more models to a continuous dependent variable)</li>
<ul><ul>
</ul>
<li><a href="http://mikemstech.blogspot.com/2014/07/the-linear-model-y-a.html" target="_blank">Understanding the null regression model (average/mean): \( y = a \)</a><br /> </li>
<ul>
</ul>
<li><a href="http://mikemstech.blogspot.com/2014/07/the-linear-regression-model-y-bx.html" target="_blank">Understanding the linear regression model for \( y = a + bx \)</a></li>
</ul>
<li>Ordinal Models (fitting one or more models to an ordinal dependent variable) </li>
<ul>
<li>Data Scale Reduction: Ordinal or Multinomial/Polychotomous/Polytomous?</li>
<li>Utilizing statistical methods involving ranks</li>
</ul>
<li>Classification Models (fitting one or more models to a qualitative/nominal dependent variable)</li>
<ul>
<li>Understanding the Null Classification Model</li>
<li>Understanding Basic Logistic Regression </li>
</ul>
<li>Defining Big Data </li>
<li>Selected Topics in Probability </li>
<li>Selected Prerequisite Topics</li>
<ul>
<li>Matrix Inversion - Finding the Inverse of a Matrix by Gaussian Elimination/Gauss-Jordan Elimination - <a href="http://mikemstech.blogspot.com/2014/07/inverse-of-1x1-matrix.html" target="_blank">1x1</a>, <a href="http://mikemstech.blogspot.com/2014/07/inverse-of-2x2-matrix.html" target="_blank">2x2</a>, <a href="http://mikemstech.blogspot.com/2014/07/inverse-of-3x3-matrix.html" target="_blank">3x3</a>, <a href="http://mikemstech.blogspot.com/2014/07/inverse-of-4x4-matrix.html" target="_blank">4x4</a></li>
<li><a href="http://mikemstech.blogspot.com/2014/07/c-matrix-inversion-with-latex-output.html" target="_blank">Symbolic Matrix Inversion using Latex and C#</a></li>
</ul>
<li>Selected Statistical Programming Topics</li>
<ul>
<li>An Overview of Statistical Software/Programming Tools</li>
<ul>
<li>MVPStats</li>
<li>R</li>
<li>SPSS </li>
<li>Python</li>
<li>Microsoft Excel </li>
</ul>
<li>The R Tutorial</li>
<ul>
<li>Installing R</li>
<ul>
<li><a href="http://mikemstech.blogspot.com/2015/05/how-to-install-r-on-windows.html" target="_blank">Installing R on Windows</a></li>
<li><a href="http://mikemstech.blogspot.com/2015/06/how-to-install-rstudio-on-windows.html" target="_blank">Installing RStudio on Windows</a></li>
<li>Self-documenting code and reports using R Markdown</li>
<li>CRAN - Installing R Packages</li>
<li>Bioconductor - Installing R Packages for Biostatistics (and useful elsewhere)</li>
</ul>
<li><a href="http://mikemstech.blogspot.com/2015/06/introduction-to-r-data-types.html" target="_blank">Introduction to Data Types in R</a></li>
<li>Operators in R</li>
<ul>
<li><a href="http://mikemstech.blogspot.com/2015/06/numeric-operators-in-r.html" target="_blank">Numeric Operators in R</a></li>
<li>Matrix Operations in R</li>
<li>Logical Operators in R</li>
<li>Bitwise Operators in R </li>
</ul>
<ul>
</ul>
<li>Regression Models in R (fitting one or more models to a continuous dependent variable)</li>
<ul>
<li> How to perform linear regression in R </li>
</ul>
</ul>
<li>The SQL Tutorial</li>
<ul>
<li>Regression Models in SQL (fitting one or more models to a continuous dependent variable) </li>
<ul>
<li><a href="http://mikemstech.blogspot.com/2013/07/sql-linear-regression.html" target="_blank">How to perform linear regression in SQL (platform - independent)</a></li>
</ul>
</ul>
</ul>
</ul>
<br />
<br />Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com0tag:blogger.com,1999:blog-7503353345181123469.post-51790387096267594532014-07-20T23:14:00.001-07:002015-05-29T13:43:37.764-07:00The Linear Model y = aThis is part of <a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Mike's Big Data, Data Mining, and Analytics Tutorial</a><br />
<br />
The simplest linear model that I am going to discuss in this series is the model \(y = a\). By the end of this post, I hope you'll walk away with the knowledge of what the model represents and how it is often used. By the end of this post, I hope you'll be able to answer the following questions:<br />
<ul>
<li>What is the "null" model?</li>
<li>How is the "null" model used?</li>
<li>Why is the solution to the linear model \( y = a \) equal to the mean?</li>
</ul>
For a minute, let's consider a scenario where we have a set of <b>interval</b> or <b>ratio</b> data that we want to learn more about. In this scenario we are attempting to <b>describe the relationship</b> in the data that we have collected. We <b>may or may not</b> be interested in <b>predicting</b> other values. We are essentially asking the question "Why are things the way that they are?" and may be asking the question "How might things be if we collect more data?" As we work through our model, we will be attempting to describe the relationship between <b>dependent</b> and <b>independent</b> variables.<br />
<br />
If your new to statistics, the words in the previous paragraph might not have a lot of meaning. Let's look at them in detail...<br />
<br />
<b>Interval/Ratio Data</b> - The words "Interval" and "Ratio" refer to the measurement scale of the data in question. Most of the models in the tutorial will require an interval/ratio dependent variable. Some clues that help us end up at a description of this measurement level include:<br />
<br />
<ul>
<li>"Zero on the scale" - the measurement scale typically has a 0 at some point. For ratio data, there is an absolute "zero" to the scale (i.e. it would be impossible for a collected data point to fall below "zero"). <br /> </li>
<li>Sub-interval equality - The distance between subsequent points on the scale are equal. For example, we would generally consider the difference between 1 degree F and 2 degrees F to be equivalent to the difference between 3 degrees and 4 degrees F.</li>
<li>"Lots" of possible values on the scale. For example, in a bank account, we could have virtually any amount above or below zero, probably down to a resolution of $0.01 (for accounts denominated in the U.S. Dollar)<br /> </li>
</ul>
<br />
Some examples of interval/ratio data include:<br />
<br />
<ul>
<li>Temperature: degrees of temperature are typically considered interval or ratio. Scales such as Celsius and Fahrenheit are typically considered interval (because they have a "zero" on the scale). Scales such as Kelvin and Rankin have an "absolute" zero on the scale, meaning there can't reasonably be values less than 0 on these scales.</li>
<li>Measurements of mass/weight/volume: Measurements of mass, weight, and volume typically have interval/ratio properties.</li>
<li>Measurements of economic value: Typical measurements of economic value are quoted in a currency or an amount of a good. <br /> </li>
</ul>
Some examples of things that aren't interval/ratio:<br />
<br />
<ul>
<li>Demographic variables such as religion, sexual preference, and gender: These can't be given non-arbitrary numeric values. Additionally, there is no meaning between the numeric "differences" applied to these categories. For example, say Republican is coded as a 1, Democrat is coded as a 2, and Independent is coded as a 3. There is no meaningful difference by describing the difference between 1 and 2, much less comparing that to the difference between 3 and 4. these are sometimes referred to as "nominal" or "categorical" data.<br /> </li>
<li>Ratings and rankings: These typically arise from surveys/questionnaires. These might take the form of the common "agree/disagree" and "satisfied/dissatisfied" scales. In this case, we can say that certain values are different (and potentially less than or greater than) other values, but we don't have homogeneity in the scale. For example, someone responding "agree" to a question might not be the same as someone else responding "agree," but after repeated measurements of the <i>same person </i>we could probably conclude that "strongly agree" is larger in magnitude than "somewhat agree" or just "agree." These are sometimes referred to as "ordinal" data.<br /> </li>
</ul>
<b>Relationships in Data/Prediction:<br /> </b><br />
We don't generally set off on a course of research without some sort of purpose. This purpose is typically to understand or optimize something. We might be asking questions of the form "Is there a relationship between X an Y?" or "Are A and B correlated?" or "Can I use C or D (or some combination) to predict E?" The purpose of each of these questions is to help us understand relationships in the real world based on data collected from our observations.<br />
<br />
We should be careful to remember that correlation does not imply causation. When we develop predictive models, we will be careful not to say things like "A is causing B" because we probably don't have sufficient basis to conclude such a thing... To be able to describe causation, we would likely need to step away from regression/classification and enter the realms of experimental design.<br />
<br />
<b>Dependent/Independent Variables</b><br />
<br />
For our purposes, the dependent variable is the variable we are interested in describing. The independent variables are the variables that we could potentially use to describe the dependent variable.<br />
Examples:<br />
<br />
<ul>
<li>If we are predicting asset prices (ex. stocks, bonds, commodities), our dependent variable might be "price in the future", and we might be using independent variables such as "price in the past," economic variables, financial data, etc.</li>
<li>If we are predicting a students "GPA in a course" (dependent variable), we might use the following as independent variables: "hours spent per week," "percentage of lectures attended," scores on standardized tests such as the SAT, ACT, GED, GRE, MCAT, etc. <br /> </li>
</ul>
So now, let's dig into the "null model."<br />
<br />
At a basic level, the null model is a model that minimizes the error when describing the dependent variable with a single number. Effectively, the overall error is minimized as measured from the horizontal (or vertical) line to each of the points. Below is a graphical depiction of the null model (generated in R):<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIPoGjo-54oN8bbS48yA7jWDxl9ctfzvT5Dhqy1xFIVYKrdJF0FHXfkjPREHOnhBxvFI-W7KKjd5w_5PW7u9ujQJRkYg7oaiJvHGlZaKuDWK2RMpzff57s8od1ayavSuATFlXbtmeIX-M/s1600/egcagjhf-773092.png"><img alt="" border="0" height="241" id="BLOGGER_PHOTO_ID_6038393621658138802" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiIPoGjo-54oN8bbS48yA7jWDxl9ctfzvT5Dhqy1xFIVYKrdJF0FHXfkjPREHOnhBxvFI-W7KKjd5w_5PW7u9ujQJRkYg7oaiJvHGlZaKuDWK2RMpzff57s8od1ayavSuATFlXbtmeIX-M/s320/egcagjhf-773092.png" width="400" /></a><br />
<br />
The null model represents the best guess that we could use to describe the data if we didn't have or didn't use any of the possible dependent variables to describe the independent variable (y in the chart above).<br />
<br />
Intuitively, we might conclude that this is the mean (or average) of the dependent variable. We can prove this below.<br />
<br />
Without sinking too much into the proofs involved in linear algebra, let's first state the (provable) assumption that we can develop a "minimum error" solution to our system of equations by solving the linear system:<br />
<br />
$$ A^T A x = A^T B $$<br />
<br />
Here, \( A \) is a matrix that contains a transformation of the independent variables and \( B \) is a matrix containing all of the dependent variable values.<br />
<br />
$$ A = \begin{pmatrix} 1 \\ \vdots \\ 1 \end{pmatrix} \quad B = \begin{pmatrix}y_1 \\ \vdots \\ y_n \end {pmatrix} $$<br />
<br />
In this case, we don't have (or aren't using) any of the independent variable data to describe the dependent variable. Now let's calculate two of the items needed in the first equation:<br />
<br />
$$ A^T A = \sum_{i=1}^n 1 = n \quad \quad A^T B = \sum_{i =1}^n 1 \cdot y_i $$<br />
<br />
So... \( A^T A \) is simply the sample size and \( A^T B \) is the sum of the dependent variable observations. If we take the inverse of \( A^T A \) and multiply it both sides, we end up with our answer for \( a \). In this case, \( A^T A \) is a 1x1 matrix. I show how to find the inverse here: <a class="moz-txt-link-freetext" href="http://mikemstech.blogspot.com/2014/07/inverse-of-1x1-matrix.html">http://mikemstech.blogspot.com/2014/07/inverse-of-1x1-matrix.html</a><br />
<br />
$$ (A^T A) ^{-1} (A^T A) x = (A^T A)^{-1} (A^T B) $$<br />
$$ x = (A^T A)^{-1} (A^T B) $$ <br />
<br />
By the matrix inversion formula for the 1x1 matrix (linked above), we see that<br />
<br />
$$ (A^T A)^{-1} (A^T B) = \frac{ \sum_{i=1}^n y_i}{n} = \bar{x} $$ <br />
Here we see that the answer to the null model is just the <b>average of the dependent variable values</b>.<br />
<br />
Let's do a small example. Say that we have the following data:<br />
$$ B = \begin{pmatrix} y_1 = 0 \\ y_2 = 5 \\ y_3 = 10 \end{pmatrix} $$<br />
<br />
Let's determine the null model for this data.<br />
<br />
$$ A = \begin{pmatrix} 1 \\ 1 \\ 1 \end{pmatrix} $$<br />
<br />
$$ A^T A = \sum_{i=1}^{3} 1 = 3 \quad \quad A^T B = (1 \cdot 0 + 1 \cdot 5 + 1 \cdot 10 = 15) $$<br />
<br />
$$ (A^T A)^{-1} = \frac { 1} {3}$$<br />
<br />
$$ (A^T A)^{-1} B = \frac { 15} {3} = 5 $$<br />
<br />
Here the null model (average) for the data is y = 5.<br />
<br />
The null model, besides being an interesting conceptual introduction, is also important for other practical reasons. When we evaluate other models, we will typically determine their <b>goodness of fit</b> based on a <b>comparison with the null model for the same data</b>. We are conceptually asking the question "Does our 'complicated' model describe the dependent variable better than the average?" There are tools that we can use to answer this question that will be discussed with the other models. Here it is also useful to initially define the <b>total sum of squares</b>.<br />
<br />
The total sum of squares (TSS) for the model is the sum of the squared deviations from the average.<br />
<br />
$$ TSS = \sum_{i=1}^n (y_i - \bar{y})^2 $$<br />
<br />
This is also equal to <br />
<br />
$$ TSS = \sum_{i=1}^n (\bar{y} - y_i)^2 $$<br />
As an example, let's consider our data from above and calculate the TSS.<br />
<br />
$$ TSS = \sum_{i=1}^n (y_i - \bar{y})^2 = (0 - 5)^2 + (5-5)^2 + (10-5)^2 = 50 $$<br />
<br />
The ending value of 50 doesn't tell us a lot until we compare it with another model (normally to see if the other model "explains" more of the variability in the dependent variable).<br />
<br />
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Back to Mike's Big Data, Data Mining, and Analytics Tutorial</a> Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com0tag:blogger.com,1999:blog-7503353345181123469.post-32584276787319249062014-07-20T17:38:00.000-07:002015-05-29T13:42:28.626-07:00Inverse of a 1x1 MatrixIn my previous post (<a class="moz-txt-link-freetext" href="http://mikemstech.blogspot.com/2014/07/c-matrix-inversion-with-latex-output.html">http://mikemstech.blogspot.com/2014/07/c-matrix-inversion-with-latex-output.html</a>) I demonstrated an application that can generate the steps to show the inversion of a matrix by Gauss Jordan elimination.<br />
<br />
In a few posts, I plan to answer the following questions:
<br />
<a href="http://mikemstech.blogspot.com/2014/07/inverse-of-1x1-matrix.html" target="_blank">What is the inverse of a 1x1 Matrix?</a><br />
<a href="http://mikemstech.blogspot.com/2014/07/inverse-of-2x2-matrix.html" target="_blank">What is the inverse of a 2x2 Matrix?</a>
<br />
<a href="http://mikemstech.blogspot.com/2014/07/inverse-of-3x3-matrix.html" target="_blank">What is the inverse of a 3x3 Matrix?</a><br />
<a href="http://mikemstech.blogspot.com/2014/07/inverse-of-4x4-matrix.html" target="_blank">What is the inverse of a 4x4 Matrix?</a><br />
<br />
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Back to Mike's Big Data, Data Mining, and Analytics Tutorial</a> <br />
<br />
The inverse of a 1x1 matrix is defined as follows. For a 1x1 matrix:<br />
<br />
$$ A = \begin{pmatrix}a_{1,1}\end{pmatrix} $$<br />
<br />
$$ A^{-1} = \begin{pmatrix}\frac{1}{a_{1,1}} \end {pmatrix} $$<br />
<br />
Obviously, if $$a_{1,1} = 0$$ the matrix has no inverse.<br />
<br />
The latex code generated for a 1x1 inverse is the following:<br />
<br />
<pre>
\documentclass{article}
% This is the output from LatexMatrixInverse 1.0 for a matrix with rank 1
% For more information on this application, see
% http://mikemstech.blogspot.com
\usepackage{geometry}
% Note: you should probably use pdflatex to compiile this file.
% Other processors are known to have some issues with using
% 'geometry' to set paper size
% Adjust the page size here if output is wrapping in a bad way.
% Default is 8.5 x 11 in (Letter)
\geometry{papersize={8.5in,11in}}
%Import AMS Latex packages
\usepackage{amsmath, amssymb}
\setcounter{MaxMatrixCols}{3}
%Variable definition
\begin{document}
% Definition of initial A
% A row 1
\newcommand{\ARbCb}{a_{1,1}}
% Definition of initial B
\newcommand{\BRb}{b_{1}}
LatexMatrixInverse 1.0 Output for rank 1, ShowIntermediateSteps is True.
For more information on this application, please see http://mikemstech.blogspot.com
Given the following initial matrices:
\begin{equation*}
A = \begin{pmatrix}\ARbCb
\end{pmatrix}B = \begin{pmatrix}\BRb\end{pmatrix}\end{equation*}
We want to find $A^{-1}$ and $A^{-1} B$...
\begin{equation*}
\left ( \begin{array}{c|c|c}\ARbCb
&1
&\BRb\end{array} \right )
\end{equation*}
\begin{equation*}
\xrightarrow{\frac{1}{\ARbCb} R_{1}}
\left ( \begin{array}{c|c|c}1
&\frac{1}{\ARbCb}
&\frac{\BRb}{\ARbCb}\end{array} \right )
\end{equation*}
\begin{equation*}
A^{-1} = \begin{pmatrix}\frac{1}{\ARbCb}
\end{pmatrix}A^{-1}B = \begin{pmatrix}\frac{\BRb}{\ARbCb}\end{pmatrix}\end{equation*}
\end{document}
</pre>
<br />
Here is a screenshot of the generated file that shows all of the steps for a 1x1 matrix inverse:<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHXBEalatiO5t5vkziOfItzcSGL9mg01PeOtjuj5jepakvJJ-MLko9rN6Ruq3Kt_HdLjS-QY7H8UU1KXSUoYskmqbSY-L_BnAfDrzS9UV9YBAaM4t7opaxMpORuIOtqdxgTSgjCIBFDCo/s1600/eadiehea-729278.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6037903382078721906" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgHXBEalatiO5t5vkziOfItzcSGL9mg01PeOtjuj5jepakvJJ-MLko9rN6Ruq3Kt_HdLjS-QY7H8UU1KXSUoYskmqbSY-L_BnAfDrzS9UV9YBAaM4t7opaxMpORuIOtqdxgTSgjCIBFDCo/s320/eadiehea-729278.png" /></a><br />
<br />
<br />
<br />Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com0tag:blogger.com,1999:blog-7503353345181123469.post-79973868384917230822014-07-20T17:37:00.002-07:002015-05-29T13:42:17.924-07:00Inverse of a 2x2 MatrixIn my previous post (<a class="moz-txt-link-freetext" href="http://mikemstech.blogspot.com/2014/07/c-matrix-inversion-with-latex-output.html">http://mikemstech.blogspot.com/2014/07/c-matrix-inversion-with-latex-output.html</a>) I demonstrated an application that can generate the steps to show the inversion of a matrix by Gauss Jordan elimination.<br />
<br />
In a few posts, I plan to answer the following questions:
<br />
<a href="http://mikemstech.blogspot.com/2014/07/inverse-of-1x1-matrix.html" target="_blank">What is the inverse of a 1x1 Matrix?</a><br />
<a href="http://mikemstech.blogspot.com/2014/07/inverse-of-2x2-matrix.html" target="_blank">What is the inverse of a 2x2 Matrix?</a>
<br />
<a href="http://mikemstech.blogspot.com/2014/07/inverse-of-3x3-matrix.html" target="_blank">What is the inverse of a 3x3 Matrix?</a><br />
<a href="http://mikemstech.blogspot.com/2014/07/inverse-of-4x4-matrix.html" target="_blank">What is the inverse of a 4x4 Matrix?</a><br />
<br />
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Back to Mike's Big Data, Data Mining, and Analytics Tutorial</a> <br />
<br />
The inverse of a 2x2 matrix is defined as follows. For a 2x2 matrix:<br />
<br />
$$ A = \begin{pmatrix}a & b \\ c & d\end{pmatrix} $$<br />
<br />
Unsimplified, the inverse is equal to:<br />
<br />
$$ A^{-1} = \begin{pmatrix}\frac{1}{a} - \left (\frac{b}{a} \right ) \left ( \frac{0 - \left (c \right ) \left ( \frac{1}{a}\right )}{d - \left (c \right ) \left ( \frac{b}{a}\right )}\right )<br />
&<br />
0 - \left (\frac{b}{a} \right ) \left ( \frac{1}{d - \left (c \right ) \left ( \frac{b}{a}\right )}\right )<br />
\\\frac{0 - \left (c \right ) \left ( \frac{1}{a}\right )}{d - \left (c \right ) \left ( \frac{b}{a}\right )}<br />
&<br />
\frac{1}{d - \left (c \right ) \left ( \frac{b}{a}\right )}<br />
\end{pmatrix} $$<br />
<br />
After simplifying, this is the inverse of a 2x2 matrix.<br />
<br />
$$ A^{-1} = \frac{1}{ad-bc} \begin{pmatrix} d & -b \\ -c & a \end {pmatrix} $$<br />
<br />
The latex code generated for a 2x2 inverse is the following (note that I changed the default variables to a, b, c, and d to match how most people learn the 2x2 matrix):<br />
<br />
<pre>\documentclass{article}
% This is the output from LatexMatrixInverse 1.0 for a matrix with rank 2
% For more information on this application, see
% http://mikemstech.blogspot.com
\usepackage{geometry}
% Note: you should probably use pdflatex to compiile this file.
% Other processors are known to have some issues with using
% 'geometry' to set paper size
% Adjust the page size here if output is wrapping in a bad way.
% Default is 8.5 x 11 in (Letter)
\geometry{papersize={16in,11in}}
%Import AMS Latex packages
\usepackage{amsmath, amssymb}
\setcounter{MaxMatrixCols}{5}
%Variable definition
\begin{document}
% Definition of initial A
% A row 1
\newcommand{\ARbCb}{a}
\newcommand{\ARbCc}{b}
% A row 2
\newcommand{\ARcCb}{c}
\newcommand{\ARcCc}{d}
% Definition of initial B
\newcommand{\BRb}{e}
\newcommand{\BRc}{f}
LatexMatrixInverse 1.0 Output for rank 2, ShowIntermediateSteps is True.
For more information on this application, please see http://mikemstech.blogspot.com
Given the following initial matrices:
\begin{equation*}
A = \begin{pmatrix}\ARbCb
&\ARbCc
\\\ARcCb
&\ARcCc
\end{pmatrix}B = \begin{pmatrix}\BRb\\ \BRc\end{pmatrix}\end{equation*}
We want to find $A^{-1}$ and $A^{-1} B$...
\begin{equation*}
\left ( \begin{array}{cc|cc|c}\ARbCb
&\ARbCc
&1
&0
&\BRb\\
\ARcCb
&\ARcCc
&0
&1
&\BRc\end{array} \right )
\end{equation*}
\begin{equation*}
\xrightarrow{\frac{1}{\ARbCb} R_{1}}
\left ( \begin{array}{cc|cc|c}1
&\frac{\ARbCc}{\ARbCb}
&\frac{1}{\ARbCb}
&0
&\frac{\BRb}{\ARbCb}\\
\ARcCb
&\ARcCc
&0
&1
&\BRc\end{array} \right )
\end{equation*}
\begin{equation*}
\xrightarrow{R_{2} - \left ( \ARcCb\right ) R_{1}}
\left ( \begin{array}{cc|cc|c}1
&\frac{\ARbCc}{\ARbCb}
&\frac{1}{\ARbCb}
&0
&\frac{\BRb}{\ARbCb}\\
0
&\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )
&0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )
&1
&\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )\end{array} \right )
\end{equation*}
\begin{equation*}
\xrightarrow{\frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} R_{2}}
\left ( \begin{array}{cc|cc|c}1
&\frac{\ARbCc}{\ARbCb}
&\frac{1}{\ARbCb}
&0
&\frac{\BRb}{\ARbCb}\\
0
&1
&\frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
&\frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
&\frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\end{array} \right )
\end{equation*}
\begin{equation*}
\xrightarrow{R_{1} - \left ( \frac{\ARbCc}{\ARbCb}\right ) R_{2}}
\left ( \begin{array}{cc|cc|c}1
&0
&\frac{1}{\ARbCb} - \left (\frac{\ARbCc}{\ARbCb} \right ) \linebreak \left ( \frac{0 - \left (\ARcCb \right )
\left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )
&0 - \left (\frac{\ARbCc}{\ARbCb} \right ) \linebreak \left ( \frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )
&\frac{\BRb}{\ARbCb} - \left (\frac{\ARbCc}{\ARbCb} \right ) \linebreak \left ( \frac{\BRc - \left (\ARcCb \right )
\left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )\\
0
&1
&\frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
&\frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
&\frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\end{array} \right )
\end{equation*}
\begin{equation*}
A^{-1} = \begin{pmatrix}\frac{1}{\ARbCb} - \left (\frac{\ARbCc}{\ARbCb} \right ) \linebreak \left ( \frac{0 - \left (\ARcCb \right )
\left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )
&
0 - \left (\frac{\ARbCc}{\ARbCb} \right ) \linebreak \left ( \frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )
\\\frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
&
\frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
\end{pmatrix}A^{-1}B = \begin{pmatrix}\frac{\BRb}{\ARbCb} - \left (\frac{\ARbCc}{\ARbCb} \right ) \linebreak \left ( \frac{\BRc - \left (\ARcCb \right )
\left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )\\ \frac{\BRc - \left (\ARcCb \right )
\left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
\end{pmatrix}\end{equation*}
\end{document}
</pre>
<br />
Here is a screenshot of the work for calculating a 2x2 inverse (based on the compiled code above):<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7P7X_AxQ1KsxTKLG6tIlXp1N3rfQ6QfcrnMekNkgI-sd8BdGWPAntD5ZW8QFPYsgLaZuA2HI4jlU1xIy2Zn9grxUD3T2uS-_1eIMh3EbaIzD2IP8vh8MV4vcAhk5MMy6ClFooYJKt6O8/s1600/gabgahdg-735474.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_6037909845300808066" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7P7X_AxQ1KsxTKLG6tIlXp1N3rfQ6QfcrnMekNkgI-sd8BdGWPAntD5ZW8QFPYsgLaZuA2HI4jlU1xIy2Zn9grxUD3T2uS-_1eIMh3EbaIzD2IP8vh8MV4vcAhk5MMy6ClFooYJKt6O8/s320/gabgahdg-735474.png" /></a>Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com0tag:blogger.com,1999:blog-7503353345181123469.post-84643573942695994862014-07-20T17:37:00.001-07:002015-05-29T13:42:37.734-07:00Inverse of a 3x3 MatrixIn my previous post
<br />
(<a href="http://mikemstech.blogspot.com/2014/07/c-matrix-inversion-with-latex-output.html">http://mikemstech.blogspot.com/2014/07/c-matrix-inversion-with-latex-output.html</a>)
<br />
I demonstrated an application that can generate the steps to show the
<br />
inversion of a matrix by Gauss Jordan elimination.
<br />
<br />
In a few posts, I plan to answer the following questions:
<br />
<a href="http://mikemstech.blogspot.com/2014/07/inverse-of-1x1-matrix.html" target="_blank">What is the inverse of a 1x1 Matrix?</a><br />
<a href="http://mikemstech.blogspot.com/2014/07/inverse-of-2x2-matrix.html" target="_blank">What is the inverse of a 2x2 Matrix?</a>
<br />
<a href="http://mikemstech.blogspot.com/2014/07/inverse-of-3x3-matrix.html" target="_blank">What is the inverse of a 3x3 Matrix?</a><br />
<a href="http://mikemstech.blogspot.com/2014/07/inverse-of-4x4-matrix.html" target="_blank">What is the inverse of a 4x4 Matrix?</a><br />
<br />
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Back to Mike's Big Data, Data Mining, and Analytics Tutorial</a> <br />
<br />
The inverse of a 3x3 matrix is defined as follows. For a 3x3 matrix:
<br />
<br />
$$ A = \begin{pmatrix}a & b & c \\ d & e & f \\ g & h & i\end{pmatrix} $$
<br />
<br />
$$ A^{-1} = \begin{pmatrix}
<br />
\frac{f h-e i}{c e g-b f g-c d h+a f h+b d i-a e i}
<br />
& \frac{c h - b i}{- c e g + b f g + c d h - a f h - b d i + a e i}
<br />
& \frac{c e - b f}{c e g - b f g - c d h + a f g + b d i - a e i } \\
<br />
\frac{f g - d i}{- c e g + b f g + c d h - a f h - b d i + a e i}
<br />
& \frac{c g - a i}{c e g - b f g - c d h+ a f h + b d i - a e i}
<br />
& \frac{c d - a f}{- c e g + b f g + c d h - a f h - b d i + a e i} \\
<br />
\frac{e g - d h}{c e g - b f g - c d h + a f h + b d i - a e i}
<br />
& \frac{b g - a h}{- c e g + b f g + c d h - a f h - b d i + a e i}
<br />
& \frac{b d - a e}{c e g - b f g - c d h + a f h + b d i - a e i}
<br />
\end {pmatrix} $$
<br />
<br />
The latex code generated for a 3x3 inverse is the following:
<br />
<br />
<pre>\documentclass{article}
% This is the output from LatexMatrixInverse 1.0 for a matrix with rank 3
% For more information on this application, see
% http://mikemstech.blogspot.com
\usepackage{geometry}
% Note: you should probably use pdflatex to compiile this file.
% Other processors are known to have some issues with using
% 'geometry' to set paper size
% Adjust the page size here if output is wrapping in a bad way.
% Default is 8.5 x 11 in (Letter)
\geometry{papersize={40in,14in}}
%Import AMS Latex packages
\usepackage{amsmath, amssymb}
\setcounter{MaxMatrixCols}{7}
%Variable definition
\begin{document}
% Definition of initial A
% A row 1
\newcommand{\ARbCb}{a}
\newcommand{\ARbCc}{b}
\newcommand{\ARbCd}{c}
% A row 2
\newcommand{\ARcCb}{d}
\newcommand{\ARcCc}{e}
\newcommand{\ARcCd}{f}
% A row 3
\newcommand{\ARdCb}{g}
\newcommand{\ARdCc}{h}
\newcommand{\ARdCd}{i}
% Definition of initial B
\newcommand{\BRb}{j}
\newcommand{\BRc}{k}
\newcommand{\BRd}{l}
LatexMatrixInverse 1.0 Output for rank 3, ShowIntermediateSteps is True.
For more information on this application, please see http://mikemstech.blogspot.com
Given the following initial matrices:
\begin{equation*}
A = \begin{pmatrix}\ARbCb
&\ARbCc
&\ARbCd
\\\ARcCb
&\ARcCc
&\ARcCd
\\\ARdCb
&\ARdCc
&\ARdCd
\end{pmatrix}B = \begin{pmatrix}\BRb\\ \BRc\\ \BRd\end{pmatrix}\end{equation*}
We want to find $A^{-1}$ and $A^{-1} B$...
\begin{equation*}
\left ( \begin{array}{ccc|ccc|c}\ARbCb
&\ARbCc
&\ARbCd
&1
&0
&0
&\BRb\\
\ARcCb
&\ARcCc
&\ARcCd
&0
&1
&0
&\BRc\\
\ARdCb
&\ARdCc
&\ARdCd
&0
&0
&1
&\BRd\end{array} \right )
\end{equation*}
\begin{equation*}
\xrightarrow{\frac{1}{\ARbCb} R_{1}}
\left ( \begin{array}{ccc|ccc|c}1
&\frac{\ARbCc}{\ARbCb}
&\frac{\ARbCd}{\ARbCb}
&\frac{1}{\ARbCb}
&0
&0
&\frac{\BRb}{\ARbCb}\\
\ARcCb
&\ARcCc
&\ARcCd
&0
&1
&0
&\BRc\\
\ARdCb
&\ARdCc
&\ARdCd
&0
&0
&1
&\BRd\end{array} \right )
\end{equation*}
\begin{equation*}
\xrightarrow{R_{2} - \left ( \ARcCb\right ) R_{1}}
\left ( \begin{array}{ccc|ccc|c}1
&\frac{\ARbCc}{\ARbCb}
&\frac{\ARbCd}{\ARbCb}
&\frac{1}{\ARbCb}
&0
&0
&\frac{\BRb}{\ARbCb}\\
0
&\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )
&\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )
&0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )
&1
&0
&\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )\\
\ARdCb
&\ARdCc
&\ARdCd
&0
&0
&1
&\BRd\end{array} \right )
\end{equation*}
\begin{equation*}
\xrightarrow{R_{3} - \left ( \ARdCb\right ) R_{1}}
\left ( \begin{array}{ccc|ccc|c}1
&\frac{\ARbCc}{\ARbCb}
&\frac{\ARbCd}{\ARbCb}
&\frac{1}{\ARbCb}
&0
&0
&\frac{\BRb}{\ARbCb}\\
0
&\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )
&\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )
&0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )
&1
&0
&\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )\\
0
&\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )
&\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )
&0 - \left (\ARdCb \right ) \left ( \frac{1}{\ARbCb}\right )
&0
&1
&\BRd - \left (\ARdCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )\end{array} \right )
\end{equation*}
\begin{equation*}
\xrightarrow{\frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} R_{2}}
\left ( \begin{array}{ccc|ccc|c}1
&\frac{\ARbCc}{\ARbCb}
&\frac{\ARbCd}{\ARbCb}
&\frac{1}{\ARbCb}
&0
&0
&\frac{\BRb}{\ARbCb}\\
0
&1
&\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
&\frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
&\frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
&0
&\frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\\
0
&\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )
&\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )
&0 - \left (\ARdCb \right ) \left ( \frac{1}{\ARbCb}\right )
&0
&1
&\BRd - \left (\ARdCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )\end{array} \right )
\end{equation*}
\begin{equation*}
\xrightarrow{R_{3} - \left ( \ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )\right ) R_{2}}
\left ( \begin{array}{ccc|ccc|c}1
&\frac{\ARbCc}{\ARbCb}
&\frac{\ARbCd}{\ARbCb}
&\frac{1}{\ARbCb}
&0
&0
&\frac{\BRb}{\ARbCb}\\
0
&1
&\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
&\frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
&\frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
&0
&\frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\\
0
&0
&\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right )
\left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb
\right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left
( \frac{\ARbCc}{\ARbCb}\right )}\right )
&0 - \left (\ARdCb \right ) \left ( \frac{1}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb
\right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{0 - \left (\ARcCb \right )
\left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )
&0 - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left (
\frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )
&1
&\BRd - \left (\ARdCb \right ) \left ( \frac{\BRb}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb
\right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\BRc - \left (\ARcCb \right )
\left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
\right )\end{array} \right )
\end{equation*}
\begin{equation*}
\xrightarrow{\frac{1}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc
- \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb
\right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}
\right )}\right )} R_{3}}
\left ( \begin{array}{ccc|ccc|c}1
&\frac{\ARbCc}{\ARbCb}
&\frac{\ARbCd}{\ARbCb}
&\frac{1}{\ARbCb}
&0
&0
&\frac{\BRb}{\ARbCb}\\
0
&1
&\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right )
\left ( \frac{\ARbCc}{\ARbCb}\right )}
&\frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left (
\frac{\ARbCc}{\ARbCb}\right )}
&\frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
&0
&\frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right )
\left ( \frac{\ARbCc}{\ARbCb}\right )}\\
0
&0
&1
&\frac{0 - \left (\ARdCb \right ) \left ( \frac{1}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right )
\left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc
- \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )
- \left (\ARdCc - \left (\ARdCb \right )
\left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}
\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}
&\frac{0 - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{1}{\ARcCc -
\left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}
{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd
- \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}
&\frac{1}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right )
\left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}
{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}
&\frac{\BRd - \left (\ARdCb \right ) \left ( \frac{\BRb}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left (
\frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc
- \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )
- \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right )
\left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\end{array} \right )
\end{equation*}
\begin{equation*}
\xrightarrow{R_{2} - \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb
\right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right ) R_{3}}
\left ( \begin{array}{ccc|ccc|c}1
&\frac{\ARbCc}{\ARbCb}
&\frac{\ARbCd}{\ARbCb}
&\frac{1}{\ARbCb}
&0
&0
&\frac{\BRb}{\ARbCb}\\
0
&1
&0
&\frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
- \left (\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
\right ) \linebreak \left ( \frac{0 - \left (\ARdCb \right ) \left ( \frac{1}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left (
\frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right )
\left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb
\right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc -
\left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right )
&\frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} - \left (\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}
\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} \right ) \linebreak \left ( \frac{0 - \left (\ARdCc - \left (\ARdCb \right )
\left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd
- \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )
\right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}
\right )}\right )}\right )
&0 - \left (\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}
\right )} \right ) \linebreak \left ( \frac{1}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb
\right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc
- \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right )
&\frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
- \left (\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}
\right )} \right ) \linebreak \left ( \frac{\BRd - \left (\ARdCb \right ) \left ( \frac{\BRb}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right )
\left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb
\right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc -
\left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc -
\left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right )\\
0
&0
&1
&\frac{0 - \left (\ARdCb \right ) \left ( \frac{1}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right )
\left ( \frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd
- \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left (
\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}
&\frac{0 - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{1}{\ARcCc - \left (\ARcCb \right ) \left (
\frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right )
\left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb
\right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}
&\frac{1}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}
\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left (
\frac{\ARbCc}{\ARbCb}\right )}\right )}
&\frac{\BRd - \left (\ARdCb \right ) \left ( \frac{\BRb}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )
\right ) \left ( \frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}
\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}
\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}
\right )}\right )}\end{array} \right )
\end{equation*}
\begin{equation*}
\xrightarrow{R_{1} - \left ( \frac{\ARbCd}{\ARbCb}\right ) R_{3}}
\left ( \begin{array}{ccc|ccc|c}1
&\frac{\ARbCc}{\ARbCb}
&0
&\frac{1}{\ARbCb} - \left (\frac{\ARbCd}{\ARbCb} \right ) \linebreak \left ( \frac{0 - \left (\ARdCb \right ) \left ( \frac{1}{\ARbCb}\right ) -
\left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}
\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}
\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left (
\frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right )
&0 - \left (\frac{\ARbCd}{\ARbCb} \right ) \linebreak \left ( \frac{0 - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )
\right ) \left ( \frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left (
\frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd
- \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right )
&0 - \left (\frac{\ARbCd}{\ARbCb} \right ) \linebreak \left ( \frac{1}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )
- \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left (
\frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right )
&\frac{\BRb}{\ARbCb} - \left (\frac{\ARbCd}{\ARbCb} \right ) \linebreak \left ( \frac{\BRd - \left (\ARdCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )
- \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\BRc - \left (\ARcCb \right )
\left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right )
\left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd
- \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right )\\
0
&1
&0
&\frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} -
\left (\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}
\right )} \right ) \linebreak \left ( \frac{0 - \left (\ARdCb \right ) \left ( \frac{1}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right )
\left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb
\right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc -
\left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}
\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right )
&\frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} - \left (\frac{\ARcCd - \left (\ARcCb \right ) \left (
\frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} \right ) \linebreak \left ( \frac{0
- \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{1}{\ARcCc - \left (\ARcCb \right )
\left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc -
\left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}
\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right )
&0 - \left (\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left (
\frac{\ARbCc}{\ARbCb}\right )} \right ) \linebreak \left ( \frac{1}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )
- \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right )
\left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right )
&\frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}
\right )} - \left (\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left (
\frac{\ARbCc}{\ARbCb}\right )} \right ) \linebreak \left ( \frac{\BRd - \left (\ARdCb \right ) \left ( \frac{\BRb}{\ARbCb}\right ) -
\left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\BRc - \left (\ARcCb \right )
\left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd -
\left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )
\right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right )
\left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right )\\
0
&0
&1
&\frac{0 - \left (\ARdCb \right ) \left ( \frac{1}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}
\right ) \right ) \left ( \frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left (
\frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right )
\left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc -
\left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}
&\frac{0 - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{1}{\ARcCc - \left (\ARcCb
\right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc
- \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}
\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}
&\frac{1}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left (
\frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc
- \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}
&\frac{\BRd - \left (\ARdCb \right ) \left ( \frac{\BRb}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )
\right ) \left ( \frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left (
\frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc -
\left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}
\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\end{array} \right )
\end{equation*}
\begin{equation*}
\xrightarrow{R_{1} - \left ( \frac{\ARbCc}{\ARbCb}\right ) R_{2}}
\left ( \begin{array}{ccc|ccc|c}1
&0
&0
&\frac{1}{\ARbCb} - \left (\frac{\ARbCd}{\ARbCb} \right ) \linebreak \left ( \frac{0 - \left (\ARdCb \right ) \left ( \frac{1}{\ARbCb}\right )
- \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{0 - \left (\ARcCb \right ) \left (
\frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right )
\left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left (
\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}
\right )}\right )}\right ) - \left (\frac{\ARbCc}{\ARbCb} \right ) \linebreak \left ( \frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}
\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} - \left (\frac{\ARcCd - \left (\ARcCb \right ) \left (
\frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} \right ) \linebreak \left ( \frac{0
- \left (\ARdCb \right ) \left ( \frac{1}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )
\right ) \left ( \frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}
\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left (
\frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc -
\left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right )\right )
&0 - \left (\frac{\ARbCd}{\ARbCb} \right ) \linebreak \left ( \frac{0 - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}
\right ) \right ) \left ( \frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb
\right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right )
\left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}
\right )}\right )}\right ) - \left (\frac{\ARbCc}{\ARbCb} \right ) \linebreak \left ( \frac{1}{\ARcCc - \left (\ARcCb \right ) \left (
\frac{\ARbCc}{\ARbCb}\right )} - \left (\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb
\right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} \right ) \linebreak \left ( \frac{0 - \left (\ARdCc - \left (\ARdCb \right ) \left (
\frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd
- \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )
\right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left (
\frac{\ARbCc}{\ARbCb}\right )}\right )}\right )\right )
&0 - \left (\frac{\ARbCd}{\ARbCb} \right ) \linebreak \left ( \frac{1}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )
- \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left (
\frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right ) - \left (\frac{\ARbCc}{\ARbCb}
\right ) \linebreak \left ( 0 - \left (\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right )
\left ( \frac{\ARbCc}{\ARbCb}\right )} \right ) \linebreak \left ( \frac{1}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )
- \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left (
\frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right )\right )
&\frac{\BRb}{\ARbCb} - \left (\frac{\ARbCd}{\ARbCb} \right ) \linebreak \left ( \frac{\BRd - \left (\ARdCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )
- \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}
\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )
- \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right )
\left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right ) - \left (\frac{\ARbCc}{\ARbCb}
\right ) \linebreak \left ( \frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
- \left (\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} \right )
\linebreak \left ( \frac{\BRd - \left (\ARdCb \right ) \left ( \frac{\BRb}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )
\right ) \left ( \frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
\right )}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )
\right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
\right )}\right )\right )\\
0
&1
&0
&\frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} - \left (\frac{\ARcCd
- \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} \right ) \linebreak \left (
\frac{0 - \left (\ARdCb \right ) \left ( \frac{1}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left (
\frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd -
\left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left (
\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right )
&\frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} - \left (\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}
\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} \right ) \linebreak \left ( \frac{0 - \left (\ARdCc - \left (\ARdCb \right )
\left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd -
\left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left (
\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right )
&0 - \left (\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
\right ) \linebreak \left ( \frac{1}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left (
\frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right )
\left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right )
&\frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} - \left (
\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} \right )
\linebreak \left ( \frac{\BRd - \left (\ARdCb \right ) \left ( \frac{\BRb}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}
\right ) \right ) \left ( \frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}
\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}
\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left (
\frac{\ARbCc}{\ARbCb}\right )}\right )}\right )\\
0
&0
&1
&\frac{0 - \left (\ARdCb \right ) \left ( \frac{1}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left (
\frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd -
\left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left (
\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}
&\frac{0 - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{1}{\ARcCc - \left (\ARcCb \right ) \left (
\frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left (
\frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right )
\left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}
&\frac{1}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )
\right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}
\right )}\right )}
&\frac{\BRd - \left (\ARdCb \right ) \left ( \frac{\BRb}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right )
\left ( \frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd
- \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left (
\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\end{array}
\right )
\end{equation*}
\begin{equation*}
A^{-1} = \begin{pmatrix}\frac{1}{\ARbCb} - \left (\frac{\ARbCd}{\ARbCb} \right ) \linebreak \left ( \frac{0 - \left (\ARdCb \right ) \left ( \frac{1}{\ARbCb}\right )
- \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc
- \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc -
\left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc -
\left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right ) - \left (\frac{\ARbCc}{\ARbCb} \right ) \linebreak \left ( \frac{0 - \left (\ARcCb \right )
\left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} - \left (\frac{\ARcCd - \left (\ARcCb \right ) \left (
\frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} \right ) \linebreak \left ( \frac{0 - \left (\ARdCb \right )
\left ( \frac{1}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{0 - \left (\ARcCb \right )
\left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left (
\frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right )
\left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right )\right )
&
0 - \left (\frac{\ARbCd}{\ARbCb} \right ) \linebreak \left ( \frac{0 - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left (
\frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) -
\left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}
\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right ) - \left (\frac{\ARbCc}{\ARbCb} \right ) \linebreak \left (
\frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} - \left (\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}
\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} \right ) \linebreak \left ( \frac{0 - \left (\ARdCc - \left (\ARdCb \right )
\left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd -
\left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right )
\left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
\right )}\right )\right )
&
0 - \left (\frac{\ARbCd}{\ARbCb} \right ) \linebreak \left ( \frac{1}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc
- \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}
{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right ) - \left (\frac{\ARbCc}{\ARbCb} \right ) \linebreak \left ( 0 -
\left (\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
\right ) \linebreak \left ( \frac{1}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left (
\frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right )
\left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right )\right )
\\\frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} - \left (
\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} \right )
\linebreak \left ( \frac{0 - \left (\ARdCb \right ) \left ( \frac{1}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )
\right ) \left ( \frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd
- \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd
- \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right )
&
\frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} - \left (\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}
\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} \right ) \linebreak \left ( \frac{0 - \left (\ARdCc - \left (\ARdCb \right )
\left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd -
\left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right )
\left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
\right )}\right )
&
0 - \left (\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
\right ) \linebreak \left ( \frac{1}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left (
\frac{\ARbCc}{\ARbCb}\right ) \right
) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
\right )}\right )
\\\frac{0 - \left (\ARdCb \right ) \left ( \frac{1}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right )
\left ( \frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd
- \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left (
\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}
&
\frac{0 - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{1}{\ARcCc - \left (\ARcCb \right ) \left (
\frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right )
\left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb
\right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}
&
\frac{1}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )
\right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}
\right )}\right )}
\end{pmatrix}A^{-1}B = \begin{pmatrix}\frac{\BRb}{\ARbCb} - \left (\frac{\ARbCd}{\ARbCb} \right ) \linebreak \left ( \frac{\BRd - \left (\ARdCb \right )
\left ( \frac{\BRb}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\BRc - \left (\ARcCb
\right ) \left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right )
\left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb
\right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right ) - \left (\frac{\ARbCc}{\ARbCb}
\right ) \linebreak \left ( \frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left (
\frac{\ARbCc}{\ARbCb}\right )} - \left (\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right )
\left ( \frac{\ARbCc}{\ARbCb}\right )} \right ) \linebreak \left ( \frac{\BRd - \left (\ARdCb \right ) \left ( \frac{\BRb}{\ARbCb}\right ) - \left (\ARdCc
- \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc
- \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right ) - \left (\ARdCc
- \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc
- \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right )\right )\\ \frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )}{
\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} - \left (\frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )}{\ARcCc
- \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} \right ) \linebreak \left ( \frac{\BRd - \left (\ARdCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )
- \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}
\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}\right )
- \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{\ARbCb}
\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\right )\\ \frac{\BRd - \left (\ARdCb \right ) \left ( \frac{\BRb}{\ARbCb}
\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{
\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}{\ARdCd - \left (\ARdCb \right ) \left ( \frac{\ARbCd}{\ARbCb}
\right ) - \left (\ARdCc - \left (\ARdCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right ) \right ) \left ( \frac{\ARcCd - \left (\ARcCb \right ) \left ( \frac{\ARbCd}{
\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )}\end{pmatrix}\end{equation*}
\end{document}
</pre>
<br />
<br />
<br />
Here is a link to the pdf showing all of the work for the inverse of a
<br />
3x3 matrix:
<br />
<br />
<a href="https://drive.google.com/file/d/0B0MeMQmnEH6ackxsa1VSMmlIVDA/edit?usp=sharing">https://drive.google.com/file/d/0B0MeMQmnEH6ackxsa1VSMmlIVDA/edit?usp=sharing</a><br />
<br />
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Back to Mike's Big Data, Data Mining, and Analytics Tutorial</a> Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com0tag:blogger.com,1999:blog-7503353345181123469.post-60576967196223397032014-07-20T17:37:00.000-07:002015-05-29T13:42:44.839-07:00Inverse of a 4x4 MatrixIn my previous post
<br />
(<a href="http://mikemstech.blogspot.com/2014/07/c-matrix-inversion-with-latex-output.html">http://mikemstech.blogspot.com/2014/07/c-matrix-inversion-with-latex-output.html</a>)
<br />
I demonstrated an application that can generate the steps to show the
<br />
inversion of a matrix by Gauss Jordan elimination.
<br />
<br />
In a few posts, I plan to answer the following questions:
<br />
<a href="http://mikemstech.blogspot.com/2014/07/inverse-of-1x1-matrix.html" target="_blank">What is the inverse of a 1x1 Matrix?</a><br />
<a href="http://mikemstech.blogspot.com/2014/07/inverse-of-2x2-matrix.html" target="_blank">What is the inverse of a 2x2 Matrix?</a>
<br />
<a href="http://mikemstech.blogspot.com/2014/07/inverse-of-3x3-matrix.html" target="_blank">What is the inverse of a 3x3 Matrix?</a><br />
<a href="http://mikemstech.blogspot.com/2014/07/inverse-of-4x4-matrix.html" target="_blank">What is the inverse of a 4x4 Matrix?</a><br />
<br />
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Back to Mike's Big Data, Data Mining, and Analytics Tutorial</a> <br />
<br />
The inverse of a 4x4 matrix is defined as follows. For a 4x4 matrix:
<br />
<br />
$$ \begin{pmatrix}a
<br />
<br />
&b
<br />
<br />
&c
<br />
<br />
&d
<br />
<br />
\\e
<br />
<br />
&f
<br />
<br />
&g
<br />
<br />
&h
<br />
<br />
\\i
<br />
<br />
&j
<br />
<br />
&k
<br />
<br />
&l
<br />
<br />
\\m
<br />
<br />
&n
<br />
<br />
&o
<br />
<br />
&p
<br />
<br />
\end{pmatrix}
<br />
<br />
$$
<br />
<br />
The inverse of the matrix simplifies to:
<br />
<br />
Row 1, Column 1:
<br />
<br />
$$\frac{f k p-f l o-g j p+g l n+h j o-h k n}{p (a f k-a g j-b e k+b g
<br />
i)-a f l o+a g l n+a h j o-a h k n+b e l o-b g l m-b h i o+b h k m+c (e
<br />
j p-e l n-f i p+f l m+h i n-h j m)+d (-e j o+e k n+f i o-f k m-g i n+g j
<br />
m)}$$
<br />
<br />
Row 1, Column 2:
<br />
<br />
$$ \frac{-b k p+b l o+c j p-c l n-d j o+d k n}{p (a f k-a g j-b e k+b g
<br />
i)-a f l o+a g l n+a h j o-a h k n+b e l o-b g l m-b h i o+b h k m+c (e
<br />
j p-e l n-f i p+f l m+h i n-h j m)+d (-e j o+e k n+f i o-f k m-g i n+g j
<br />
m)} $$
<br />
<br />
Row 1, Column 3
<br />
<br />
$$\frac{b g p-b h o-c f p+c h n+d f o-d g n}{p (a f k-a g j-b e k+b g
<br />
i)-a f l o+a g l n+a h j o-a h k n+b e l o-b g l m-b h i o+b h k m+c (e
<br />
j p-e l n-f i p+f l m+h i n-h j m)+d (-e j o+e k n+f i o-f k m-g i n+g j
<br />
m)}$$
<br />
<br />
Row 1, Column 4
<br />
<br />
$$ \frac{d g j - c h j - d f k + b h k + c f l - b g l}{b h k m - b g l m -
<br />
a h k n + a g l n - b h i o + a h j o + b e l o - a f l o +
<br />
d (g j m - f k m - g i n + e k n + f i o - e j o) + (b g i -
<br />
a g j - b e k + a f k) p +
<br />
c (-h j m + f l m + h i n - e l n - f i p + e j p)} $$
<br />
<br />
Row 2, Column 1
<br />
<br />
$$ \frac{-e k p+e l o+g i p-g l m-h i o+h k m}{p (a f k-a g j-b e k+b g
<br />
i)-a f l o+a g l n+a h j o-a h k n+b e l o-b g l m-b h i o+b h k m+c (e
<br />
j p-e l n-f i p+f l m+h i n-h j m)+d (-e j o+e k n+f i o-f k m-g i n+g j
<br />
m)} $$
<br />
<br />
Row 2, Column 2
<br />
<br />
$$ \frac{-d k m + c l m + d i o - a l o - c i p + a k p}{b h k m - b g l m -
<br />
a h k n + a g l n - b h i o + a h j o + b e l o - a f l o +
<br />
d (g j m - f k m - g i n + e k n + f i o - e j o) + (b g i -
<br />
a g j - b e k + a f k) p +
<br />
c (-h j m + f l m + h i n - e l n - f i p + e j p)} $$
<br />
<br />
Row 2, Column 3
<br />
<br />
$$ \frac{-a g p+a h o+c e p-c h m-d e o+d g m}{p (a f k-a g j-b e k+b g
<br />
i)-a f l o+a g l n+a h j o-a h k n+b e l o-b g l m-b h i o+b h k m+c (e
<br />
j p-e l n-f i p+f l m+h i n-h j m)+d (-e j o+e k n+f i o-f k m-g i n+g j
<br />
m)} $$
<br />
<br />
Row 2, Column 4
<br />
<br />
$$ \frac{a g l-a h k-c e l+c h i+d e k-d g i}{p (a f k-a g j-b e k+b g
<br />
i)-a f l o+a g l n+a h j o-a h k n+b e l o-b g l m-b h i o+b h k m+c (e
<br />
j p-e l n-f i p+f l m+h i n-h j m)+d (-e j o+e k n+f i o-f k m-g i n+g j
<br />
m)} $$
<br />
<br />
Row 3, Column 1
<br />
<br />
$$ \frac{e j p-e l n-f i p+f l m+h i n-h j m}{p (a f k-a g j-b e k+b g
<br />
i)-a f l o+a g l n+a h j o-a h k n+b e l o-b g l m-b h i o+b h k m+c (e
<br />
j p-e l n-f i p+f l m+h i n-h j m)+d (-e j o+e k n+f i o-f k m-g i n+g j
<br />
m)} $$
<br />
<br />
Row 3, Column 2
<br />
<br />
$$ \frac{-a j p+a l n+b i p-b l m-d i n+d j m}{p (a f k-a g j-b e k+b g
<br />
i)-a f l o+a g l n+a h j o-a h k n+b e l o-b g l m-b h i o+b h k m+c (e
<br />
j p-e l n-f i p+f l m+h i n-h j m)+d (-e j o+e k n+f i o-f k m-g i n+g j
<br />
m)} $$
<br />
<br />
Row 3, Column 3
<br />
<br />
$$ \frac{a f p-a h n-b e p+b h m+d e n-d f m}{p (a f k-a g j-b e k+b g
<br />
i)-a f l o+a g l n+a h j o-a h k n+b e l o-b g l m-b h i o+b h k m+c (e
<br />
j p-e l n-f i p+f l m+h i n-h j m)+d (-e j o+e k n+f i o-f k m-g i n+g j
<br />
m)} $$
<br />
<br />
Row 3, Column 4
<br />
<br />
$$ \frac{-a f l+a h j+b e l-b h i-d e j+d f i}{p (a f k-a g j-b e k+b g
<br />
i)-a f l o+a g l n+a h j o-a h k n+b e l o-b g l m-b h i o+b h k m+c (e
<br />
j p-e l n-f i p+f l m+h i n-h j m)+d (-e j o+e k n+f i o-f k m-g i n+g j
<br />
m)} $$
<br />
<br />
Row 4, Column 1
<br />
<br />
$$ \frac{-e j o+e k n+f i o-f k m-g i n+g j m}{p (a f k-a g j-b e k+b g
<br />
i)-a f l o+a g l n+a h j o-a h k n+b e l o-b g l m-b h i o+b h k m+c (e
<br />
j p-e l n-f i p+f l m+h i n-h j m)+d (-e j o+e k n+f i o-f k m-g i n+g j
<br />
m)} $$
<br />
<br />
Row 4, Column 2
<br />
<br />
$$ \frac{a j o-a k n-b i o+b k m+c i n-c j m}{p (a f k-a g j-b e k+b g
<br />
i)-a f l o+a g l n+a h j o-a h k n+b e l o-b g l m-b h i o+b h k m+c (e
<br />
j p-e l n-f i p+f l m+h i n-h j m)+d (-e j o+e k n+f i o-f k m-g i n+g j
<br />
m)} $$
<br />
<br />
Row 4, Column 3
<br />
<br />
$$ \frac{c f m - b g m - c e n + a g n + b e o - a f o}{b h k m - b g l m -
<br />
a h k n + a g l n - b h i o + a h j o + b e l o - a f l o +
<br />
d (g j m - f k m - g i n + e k n + f i o - e j o) + (b g i -
<br />
a g j - b e k + a f k) p +
<br />
c (-h j m + f l m + h i n - e l n - f i p + e j p)} $$
<br />
<br />
Row 4, Column 4
<br />
<br />
$$ \frac{-c f i + b g i + c e j - a g j - b e k + a f k}{b h k m - b g l m -
<br />
a h k n + a g l n - b h i o + a h j o + b e l o - a f l o +
<br />
d (g j m - f k m - g i n + e k n + f i o - e j o) + (b g i -
<br />
a g j - b e k + a f k) p +
<br />
c (-h j m + f l m + h i n - e l n - f i p + e j p)} $$<br />
<br />
<br />
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Back to Mike's Big Data, Data Mining, and Analytics Tutorial</a>Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com0tag:blogger.com,1999:blog-7503353345181123469.post-20470141737367844532014-07-19T14:04:00.002-07:002014-07-20T17:39:16.243-07:00C# Matrix Inversion With Latex OutputMatrix inversion is important in the domains of solving a large number of problems. Many types of problems can be expressed and then solved using matrices. In my areas of work, I most frequently encounter matrix inversion problems when working with regression problems and math problems involving affine transformations (ex. those used in cryptography applications).<br />
<br />
Anyway, from my first college level linear algebra class, I typed up most of my math homework using Latex, and I worked out a reasonable way to show Matrix inversion step by step using row multiplications and row additions. Even though it's been a number of years since I've taken a course in linear algebra, I've wanted to build an application that outlines all of the single row multiplication and multiple row additions that are required to find the inverse for a matrix of arbitrary rank (rank is the number of diagonal elements in a square matrix).<br />
<br />
Researchers might use this application to help them find a solution to a specific problem. Students might use the application to check their homework or to learn more about Gauss Jordan elimination. <br />
Using this application, in a few posts I plan to answer the following questions:
<br />
<a href="http://mikemstech.blogspot.com/2014/07/inverse-of-1x1-matrix.html" target="_blank">What is the inverse of a 1x1 Matrix?</a><br />
<a href="http://mikemstech.blogspot.com/2014/07/inverse-of-2x2-matrix.html" target="_blank">What is the inverse of a 2x2 Matrix?</a>
<br />
<a href="http://mikemstech.blogspot.com/2014/07/inverse-of-3x3-matrix.html" target="_blank">What is the inverse of a 3x3 Matrix?</a><br />
<a href="http://mikemstech.blogspot.com/2014/07/inverse-of-4x4-matrix.html" target="_blank">What is the inverse of a 4x4 Matrix?</a>
<br />
Depending on the input matrix, initial row substitutions might be necessary to ensure that all diagonal elements are non-zero during the elimination process, since the application has no knowledge of the input matrix (this is directly entered into the generated latex code). Additionally, some steps may need to be removed from the output as they might be unnecessary (ex. initial zero elements off of the diagonal of the input matrix).<br />
<br />
This application can, with sufficient memory, disk space, and compiled as 64 bit, invert large matrices, but Latex has an inherent limitation of paper sizes around 200 in wide. Testing would suggest that any matrix over rank 4 will probably overrun this limitation. Additionally, the disk size for all of the intermediate steps becomes really large (my machine tops out computing an 8x8, with an output file size > 10 GB). Latex also has some difficulty compiling these large files (numerous changes to texmf.cnf). These settings are about the highest that I can apply to my system:<br />
<br />
main_memory = 10000000<br />
extra_mem_top = 10000000<br />
max_strings = 2000000<br />
hash_extra = 10000000<br />
pool_size = 25000000<br />
<br />
<b>If you need to compile the .tex files linked to my blog or generated from my tex generating applications, you should probably use Tex Live: <a href="http://tug.org/texlive/">http://tug.org/texlive/</a></b><br />
<br />
Here is an example of the tex output of the application for a 2x2 matrix (<b>note that you can change the variables that appear in the final output</b>):<br />
<br />
<pre>\documentclass{article}
% This is the output from LatexMatrixInverse 1.0 for a matrix with rank 2
% For more information on this application, see
% http://mikemstech.blogspot.com
\usepackage{geometry}
% Note: you should probably use pdflatex to compiile this file.
% Other processors are known to have some issues with using
% 'geometry' to set paper size
% Adjust the page size here if output is wrapping in a bad way.
% Default is 8.5 x 11 in (Letter)
\geometry{papersize={16in,11in}}
%Import AMS Latex packages
\usepackage{amsmath, amssymb}
\setcounter{MaxMatrixCols}{5}
%Variable definition
\begin{document}
% Definition of initial A
% A row 1
\newcommand{\ARbCb}{a_{1,1}}
\newcommand{\ARbCc}{a_{1,2}}
% A row 2
\newcommand{\ARcCb}{a_{2,1}}
\newcommand{\ARcCc}{a_{2,2}}
% Definition of initial B
\newcommand{\BRb}{b_{1}}
\newcommand{\BRc}{b_{2}}
LatexMatrixInverse 1.0 Output for rank 2, ShowIntermediateSteps is True.
For more information on this application, please see http://mikemstech.blogspot.com
Given the following initial matrices:
\begin{equation*}
A = \begin{pmatrix}\ARbCb
&\ARbCc
\\\ARcCb
&\ARcCc
\end{pmatrix}B = \begin{pmatrix}\BRb\\ \BRc\end{pmatrix}\end{equation*}
We want to find $A^{-1}$ and $A^{-1} B$...
\begin{equation*}
\left ( \begin{array}{cc|cc|c}\ARbCb
&\ARbCc
&1
&0
&\BRb\\
\ARcCb
&\ARcCc
&0
&1
&\BRc\end{array} \right )
\end{equation*}
\begin{equation*}
\xrightarrow{\frac{1}{\ARbCb} R_{1}}
\left ( \begin{array}{cc|cc|c}1
&\frac{\ARbCc}{\ARbCb}
&\frac{1}{\ARbCb}
&0
&\frac{\BRb}{\ARbCb}\\
\ARcCb
&\ARcCc
&0
&1
&\BRc\end{array} \right )
\end{equation*}
\begin{equation*}
\xrightarrow{R_{2} - \left ( \ARcCb\right ) R_{1}}
\left ( \begin{array}{cc|cc|c}1
&\frac{\ARbCc}{\ARbCb}
&\frac{1}{\ARbCb}
&0
&\frac{\BRb}{\ARbCb}\\
0
&\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )
&0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )
&1
&\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )\end{array} \right )
\end{equation*}
\begin{equation*}
\xrightarrow{\frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )} R_{2}}
\left ( \begin{array}{cc|cc|c}1
&\frac{\ARbCc}{\ARbCb}
&\frac{1}{\ARbCb}
&0
&\frac{\BRb}{\ARbCb}\\
0
&1
&\frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
&\frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
&\frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\end{array} \right )
\end{equation*}
\begin{equation*}
\xrightarrow{R_{1} - \left ( \frac{\ARbCc}{\ARbCb}\right ) R_{2}}
\left ( \begin{array}{cc|cc|c}1
&0
&\frac{1}{\ARbCb} - \left (\frac{\ARbCc}{\ARbCb} \right ) \linebreak \left ( \frac{0 - \left (\ARcCb \right )
\left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )
&0 - \left (\frac{\ARbCc}{\ARbCb} \right ) \linebreak \left ( \frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )
&\frac{\BRb}{\ARbCb} - \left (\frac{\ARbCc}{\ARbCb} \right ) \linebreak \left ( \frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc
- \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )\\
0
&1
&\frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
&\frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
&\frac{\BRc - \left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\end{array} \right )
\end{equation*}
\begin{equation*}
A^{-1} = \begin{pmatrix}\frac{1}{\ARbCb} - \left (\frac{\ARbCc}{\ARbCb} \right ) \linebreak \left ( \frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc
- \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )
&
0 - \left (\frac{\ARbCc}{\ARbCb} \right ) \linebreak \left ( \frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )
\\\frac{0 - \left (\ARcCb \right ) \left ( \frac{1}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
&
\frac{1}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}
\end{pmatrix}A^{-1}B = \begin{pmatrix}\frac{\BRb}{\ARbCb} - \left (\frac{\ARbCc}{\ARbCb} \right ) \linebreak \left ( \frac{\BRc - \left (\ARcCb \right )
\left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\right )\\ \frac{\BRc -
\left (\ARcCb \right ) \left ( \frac{\BRb}{\ARbCb}\right )}{\ARcCc - \left (\ARcCb \right ) \left ( \frac{\ARbCc}{\ARbCb}\right )}\end{pmatrix}
\end{equation*}
\end{document}
</pre>
Below is a screenshot of the PDF output from the 2x2 file:<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBNaTBB06Iym1Y4MLOkhI_bJy9OC63-F9p91l3e6rqxmrizF3xyzQzmMSeMxo3qCl05jWxG9nREmPP5VDBlYnod0GTSsaVQHLh7yRtnz_P6N6BXijGsRCB2FvP3R524KFAE_LhSAzNumA/s1600/eiiejjbd-714683.png"><img alt="" border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiBNaTBB06Iym1Y4MLOkhI_bJy9OC63-F9p91l3e6rqxmrizF3xyzQzmMSeMxo3qCl05jWxG9nREmPP5VDBlYnod0GTSsaVQHLh7yRtnz_P6N6BXijGsRCB2FvP3R524KFAE_LhSAzNumA/s320/eiiejjbd-714683.png" id="BLOGGER_PHOTO_ID_6037880982388440850" /></a><br />
<br />
Obviously, the end user would need to perform any simplification at the end.<br />
<br />
Below is the application in C#<br />
<br />
<br />
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">using</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> System;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">using</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> System.Collections.Generic;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">using</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> System.Linq;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">using</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> System.Text;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">using</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> System.Threading.Tasks;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">namespace</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> LatexMatrixInverse<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">public</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">class</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Program</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">public</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> rank = 0;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">public</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">[,] A,<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>A_inverse;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">public</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">[] B;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">public</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> ArrayFormat = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">null</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">public</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">bool</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> ShowIntermediateSteps = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">true</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">public</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">bool</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> FinalOutputAsMatrix = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">true</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">static</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">void</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> Main(</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">[] args)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Program</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> p = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Program</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">();<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">if</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (args.Length == 1)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>p.rank = 0;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//arg 0 is rank</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">try</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> { p.rank = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Parse(args[0]); }<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">catch</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Exception</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">) { PrintUsage(); </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">return</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">; }<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">if</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (p.rank < 1)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>PrintUsage(); </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">return</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>p.ProcessA();<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">else</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>PrintUsage();<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">public</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">void</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> ProcessA()<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">// Print out the preamble stuff</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\documentclass{article}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">@"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">% This is the output from LatexMatrixInverse 1.0 for a matrix with rank "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + rank + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">@" </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">% For more information on this application, see</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">% <a class="moz-txt-link-freetext" href="http://mikemstech.blogspot.com/">http://mikemstech.blogspot.com</a></span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">\usepackage{geometry}</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">% Note: you should probably use pdflatex to compiile this file. </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">% Other processors are known to have some issues with using</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">% 'geometry' to set paper size</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">% Adjust the page size here if output is wrapping in a bad way.</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">% Default is 8.5 x 11 in (Letter)</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">\geometry{papersize={8.5in,11in}}</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">%Import AMS Latex packages</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">\usepackage{amsmath, amssymb}</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">\setcounter{MaxMatrixCols}{"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + (2 * rank + 1) + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">@"}</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">%Variable definition</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">// Define variables</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">// We have A = {a_i_j}, B = {b_j} </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">// Want to find solution to Ax=B by Gauss-Jordan elimination</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">// </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">// Variables format: X= row, Y = column</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">// \newcommand{ArXcY}{a_{X,Y}}</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">// \newcommand{BrX}{b_X} </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">// Have to do odd things with the numbers in the command names </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">// because latex doesn't support numbers in \newcommand </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>A = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">[rank, rank];<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>A_inverse = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">[rank, rank];<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>B = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">[rank];<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">StringBuilder</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> A_definition = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">StringBuilder</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"% Definition of initial A"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">StringBuilder</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> B_definition = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">StringBuilder</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"% Definition of initial B\r\n"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> i = 0; i < rank; i++)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>A_definition.AppendLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">@"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">% A row "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + (i + 1));<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> j = 0; j < rank; j++)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>A[i, j] = </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\AR"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + NtoC(i + 1) + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"C"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + NtoC(j + 1);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>A_definition.AppendLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\newcommand{\\AR"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + NtoC(i + 1) + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"C"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + NtoC(j + 1) <o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>+ </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"}{a_{"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + (i + 1) + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">","</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + (j + 1) + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"}}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>A_inverse[i, j] = (i == j ? </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"1"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> : </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"0"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>B[i] = </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\BR"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + NtoC(i + 1);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>B_definition.AppendLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\newcommand{\\BR"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + NtoC(i + 1) + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"}{b_{"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + (i + 1) + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"}}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\begin{document}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(A_definition);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(B_definition);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine();<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine();<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"LatexMatrixInverse 1.0 Output for rank "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + rank + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">", ShowIntermediateSteps is "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> <o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>+ ShowIntermediateSteps.ToString() + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"."</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine();<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"For more information on this application, please see <a class="moz-txt-link-freetext" href="http://mikemstech.blogspot.com/">http://mikemstech.blogspot.com</a>"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine();<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Given the following initial matrices:"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\begin{equation*}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">// Print out A</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Write(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"A = \\begin{pmatrix}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> i = 0; i < rank; i++)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">if</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (i > 0) </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Write(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\\\"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> j = 0; j < rank; j++)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">if</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (j > 0) </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Write(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"&"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(A[i, j]);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Write(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\end{pmatrix}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">// Print out B</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Write(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"B = \\begin{pmatrix}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Write(B[0]);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> i = 1; i < rank; i++)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Write(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\\\ "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + B[i]);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Write(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\end{pmatrix}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\end{equation*}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">" We want to find $A^{-1}$ and $A^{-1} B$..."</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">StringBuilder</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> array_fmt = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">StringBuilder</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">();<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> j = 0; j < 2; j++)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> i = 0; i < rank; i++)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>array_fmt.Append(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"c"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>array_fmt.Append(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"|"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>ArrayFormat = array_fmt.Append(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"c"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">).ToString();<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">if</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (ShowIntermediateSteps)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\begin{equation*}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(GetCombinedArrays());<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\end{equation*}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> multiplier = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">null</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">// Build the upper triangle matrix in A</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> i = 0; i < rank; i++)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>multiplier = A[i, i];<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>B[i] = </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\frac{"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + B[i] + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"}{"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + multiplier + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">if</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (A_inverse[i, i] != </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"0"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>A_inverse[i, i] = </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\frac{"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + A_inverse[i, i] + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"}{"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + multiplier + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>A[i, i] = </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"1"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//work with under the diagonal elements on the inverse</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> j = 0; j < i; j++)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">if</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (A_inverse[i, j] != </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"0"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>A_inverse[i, j] = </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\frac{"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + A_inverse[i, j] + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"}{"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + multiplier + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//work with over the diagonal elements in the row for A</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> j = i + 1; j < rank; j++)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>A[i, j] = </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\frac{"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + A[i, j] + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"}{"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + multiplier + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">if</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (ShowIntermediateSteps)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\begin{equation*}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\xrightarrow{\\frac{1}{"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + multiplier + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"} R_{"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + (i + 1) + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"}}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(GetCombinedArrays());<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\end{equation*}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//Row additions</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> j = i + 1; j < rank; j++)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>multiplier = A[j, i];<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">// Work with B</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>B[j] = B[j] + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">" - \\left ("</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + multiplier + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">" \\right ) \\left ( "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + B[i] + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\right )"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">// Row addition in A</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>A[j, i] = </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"0"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> k = i + 1; k < rank; k++)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>A[j, k] = A[j, k] + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">" - \\left ("</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + multiplier + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">" \\right ) \\left ( "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + A[i, k] + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\right )"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//Work with inverse matrix</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> k = 0; k <= i; k++)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">if</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (A_inverse[i, k] != </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"0"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>A_inverse[j, k] = A_inverse[j, k] + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">" - \\left ("</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + multiplier + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">" \\right ) \\left ( "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + A_inverse[i, k] + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\right )"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">if</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (ShowIntermediateSteps)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\begin{equation*}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\xrightarrow{R_{"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + (j + 1) + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"} - \\left ( "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + multiplier + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\right ) R_{"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + (i + 1) + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"}}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(GetCombinedArrays());<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\end{equation*}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//Now finish the elimination from the diagonal in A to the upper triangle of A</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> i = rank - 1; i >= 0; i--)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> j = i - 1; j >= 0; j--)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//What's the multiplier?</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>multiplier = A[j, i];<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>A[j, i] = </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"0"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//Handle the B[j]</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>B[j] = B[j] + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">" - \\left ("</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + multiplier + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">" \\right ) \\linebreak \\left ( "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + B[i] + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\right )"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//Nothing to do with A in this case</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//A inverse is going to be a full row operation</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> k = 0; k < rank; k++)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>A_inverse[j, k] = A_inverse[j, k] + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">" - \\left ("</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + multiplier + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">" \\right ) \\linebreak \\left ( "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + A_inverse[i, k] + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\right )"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">if</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (ShowIntermediateSteps)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\begin{equation*}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\xrightarrow{R_{"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + (j + 1) + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"} - \\left ( "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + multiplier + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\right ) R_{"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + (i + 1) + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"}}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(GetCombinedArrays());<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\end{equation*}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">if</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (FinalOutputAsMatrix)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\begin{equation*}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">// Print out A</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Write(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"A^{-1} = \\begin{pmatrix}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> i = 0; i < rank; i++)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">if</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (i > 0) </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Write(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\\\"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> j = 0; j < rank; j++)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">if</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (j > 0) </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"&"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(A_inverse[i, j]);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Write(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\end{pmatrix}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">// Print out B</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Write(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"A^{-1}B = \\begin{pmatrix}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Write(B[0]);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> i = 1; i < rank; i++)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Write(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\\\ "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + B[i]);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Write(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\end{pmatrix}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\end{equation*}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">else</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine();<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine();<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"The solution for $A^{-1}$ follows..."</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine();<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> i = 0; i < rank; i++)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> j = 0; j < rank; j++)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Row "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + i + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">", Column "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + j + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">" of $A^{-1}$ is"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\begin{equation*}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(A_inverse[i, j]);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\end{equation*}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> i = 0; i < rank; i++)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Row "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + i + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">" of $A^{-1} B$ is"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\begin{equation*}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(B[i]);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\end{equation*}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//End of file</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\end{document}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">public</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> GetCombinedArrays()<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">StringBuilder</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> output = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">StringBuilder</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">();<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>output.Append(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\left ( \\begin{array}{"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> + ArrayFormat + </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> i = 0; i < rank; i++)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">if</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (i > 0) { output.AppendLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\\\"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">); }<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> j = 0; j < rank; j++)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">if</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (j > 0) output.Append(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"&"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>output.AppendLine(A[i, j]);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">for</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> j = 0; j < rank; j++)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>output.Append(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"&"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>output.AppendLine(A_inverse[i, j]);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>output.Append(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"&"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>output.Append(B[i]);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>output.Append(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"\\end{array} \\right )"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">return</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> output.ToString();<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">public</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> NtoC(</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">int</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> input)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">return</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> NtoC(input.ToString());<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">public</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> NtoC(</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> input)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">return</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> input.Replace(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"0"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"a"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>.Replace(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"1"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"b"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>.Replace(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"2"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"c"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>.Replace(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"3"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"d"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>.Replace(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"4"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"e"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>.Replace(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"5"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"f"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>.Replace(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"6"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"g"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>.Replace(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"7"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"h"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>.Replace(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"8"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"i"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">)<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>.Replace(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"9"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"j"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">public</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">static</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">void</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> PrintUsage()<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>{<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">@"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">LatexMatrixInverse C#.Net Edition 1.0</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Developed by Mike Burr</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><a class="moz-txt-link-freetext" href="http://mikemstech.blogspot.com/">http://mikemstech.blogspot.com</a></span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">This application is provided without any warranties, express or implied.</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Usage: LatexMatrixInverse <rank></span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><rank>: The rank of the matrix. Also the number of the diagonal elements in a square matrix.</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">ex. A 2x2 matrix has rank 2, a 3x3 matrix has rank 3, etc...</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">The latex code for the matrix inverse and corresponding solution vector </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">of a matrix with given rank will be written to standard out along with supporting work </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">code (ex. row transformations and additions). The end user should then adjust the matrix </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">values in the resulting latex code to get the desired result for their specific problem. </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">The matrix inversion is performed using Gauss-Jordan elimination.</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Note that singular matrices still won't be invertible, but matrices with inverses</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">should be invertible using the latex code generated with the occasional initial</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">row substitution. Simplification of the resulting formulas are the end user's</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">responsibility.</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">A recommended use of the application would be to redirect the output to a file.</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">ex. The inverse for a 3x3 matrix written to m3x3.tex:</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">LatexMatrixInverse 3 > m3x3.tex</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">}<o:p></o:p></span></div>
<div class="MsoNormal">
<br /></div>
<link href="file:///C:%5CUsers%5CMike%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" rel="File-List"></link> <!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:AllowPNG/> </o:OfficeDocumentSettings> </xml><![endif]--> <link href="file:///C:%5CUsers%5CMike%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" rel="themeData"></link> <link href="file:///C:%5CUsers%5CMike%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" rel="colorSchemeMapping"></link> <!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <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>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:EnableOpenTypeKerning/> <w:DontFlipMirrorIndents/> <w:OverrideTableStyleHps/> </w:Compatibility> <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:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false" DefSemiHidden="false" DefQFormat="false" DefPriority="99" LatentStyleCount="371"> <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="39" 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" 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="41" Name="Plain Table 1"/> <w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/> <w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/> <w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/> <w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/> <w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/> <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/> <w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/> <w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/> <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:LatentStyles> </xml><![endif]--> <style> <!-- /* Font Definitions */ @font-face {font-family:"Cambria Math"; panose-1:0 0 0 0 0 0 0 0 0 0; mso-font-charset:1; mso-generic-font-family:roman; mso-font-format:other; mso-font-pitch:variable; mso-font-signature:0 0 0 0 0 0;} @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-536870145 1073786111 1 0 415 0;} @font-face {font-family:Consolas; panose-1:2 11 6 9 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:-520092929 1073806591 9 0 415 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin-top:0in; margin-right:0in; margin-bottom:8.0pt; margin-left:0in; line-height:107%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:Calibri; mso-fareast-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:Calibri; mso-fareast-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} .MsoPapDefault {mso-style-type:export-only; margin-bottom:8.0pt; line-height:107%;} @page WordSection1 {size:8.5in 11.0in; margin:1.0in 1.0in 1.0in 1.0in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.WordSection1 {page:WordSection1;} </style> <br />
--><!--[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-top:0in; mso-para-margin-right:0in; mso-para-margin-bottom:8.0pt; mso-para-margin-left:0in; line-height:107%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;} </style> <![endif]--><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com0tag:blogger.com,1999:blog-7503353345181123469.post-739516651784891972013-07-09T12:55:00.000-07:002015-05-29T13:40:25.933-07:00SQL Linear Regression<a href="http://mikemstech.blogspot.com/2014/07/mikes-regression-and-model-fitting.html" target="_blank">This post is part of the Regression and Model Fitting Tutorial </a><br />
<br />
Linear regression is one of the all time most used model fitting techniques used in the world today. As part of a recent project I had a use case where I was generating a lot of reports with a lot of charts that used linear regression. Having someone run these by hand would have taken months where a small amount of development effort reduced that effort so that a number of charts could be generated with the most current data on a daily basis. <br />
<br />
Before we get too far into the details of the query, we should review a little bit of the math behind linear regression. The basic idea of linear regression is that we want to fit a line (usually in the form of y = a + bx ) against a set of points where we minimize the total "overall" error between the line and the data points (in the figure below the yellow line is the regression line and the blue points are the data points):<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7mRVrHqy6NrAy_rbVm6cVAAYsW1iTs5rKnnaPzpBcnxeQO5Opo2IxhbiLtJqdhmiy3TYTlNm0ArMBuQFCKy1HBi3ujHGHjIHB-60HOZ6wKBJacfJyheRKjicdnEC61DotBVLV5Mz5Dng/s1600/cbjbjfdd-741920.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5898706119118221122" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi7mRVrHqy6NrAy_rbVm6cVAAYsW1iTs5rKnnaPzpBcnxeQO5Opo2IxhbiLtJqdhmiy3TYTlNm0ArMBuQFCKy1HBi3ujHGHjIHB-60HOZ6wKBJacfJyheRKjicdnEC61DotBVLV5Mz5Dng/s320/cbjbjfdd-741920.png" /></a><br />
<br />
Mathematically, this is a problem that is well understood and breaks down to simultaneously solving a set of linear equations using the method of least squares. The equations take the following form, solving for a and b in a way that minimizes the overall error of the model:<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3T2gPz3WW_oFqS0tWRHThEOGHsE7g477hvMTVkplL14lYNnUKm88V2rAgj4vJDlui3n7cRcKhzNZnCo7SI5er1APTLgApL217ZPBYKHnAl8CCkopYLgLmrnmqqWXJm9ZnSRR42R_YO-8/s1600/fjidbifa-744045.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5898706126465732258" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3T2gPz3WW_oFqS0tWRHThEOGHsE7g477hvMTVkplL14lYNnUKm88V2rAgj4vJDlui3n7cRcKhzNZnCo7SI5er1APTLgApL217ZPBYKHnAl8CCkopYLgLmrnmqqWXJm9ZnSRR42R_YO-8/s320/fjidbifa-744045.png" /></a><br />
<br />
Although you can algebraically solve it in this form, it is extremely tedious and quickly gets out of hand when you have more than a few data points. The best way that I've learned to solve these equations goes back to linear algebra and matrices. We take our observations and create the following three matrices (x1, x2, x3, etc are observations of the X variable and y1, y2, y3, etc are observations of the Y variable):<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCi-Zh8_hgmUBteMf4yElYnI1EVe6byRrRoWR4ciPDzpwwjFgomz-rsDTPK24GucXHi79jjgw4Y14iBddGYWsZUR5SjnHhIZbmtg-LXVwwjGzZQk6LdOsDPfO9YcUxEPXj1ZkgURvdZbg/s1600/cahaecfa-745794.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5898706135593537698" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjCi-Zh8_hgmUBteMf4yElYnI1EVe6byRrRoWR4ciPDzpwwjFgomz-rsDTPK24GucXHi79jjgw4Y14iBddGYWsZUR5SjnHhIZbmtg-LXVwwjGzZQk6LdOsDPfO9YcUxEPXj1ZkgURvdZbg/s320/cahaecfa-745794.png" /></a><br />
<br />
and we solve the following equation to get <b>a</b> and <b>b</b> left in <b>X</b>.<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDTZZF0trnnvXN5qknLQJC4tMrt2g4jhX2snvHr_bnS34mNy92yFgMv4GaDx4lEBcU8bw30voXMqzPHZzyGutzdUT7nEBTSt5sFeIKPSaVI_lZKL_pVQK9IuxMnJe6u64tvXHqZqz9-_o/s1600/ehjaifhd-747580.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5898706142000012146" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjDTZZF0trnnvXN5qknLQJC4tMrt2g4jhX2snvHr_bnS34mNy92yFgMv4GaDx4lEBcU8bw30voXMqzPHZzyGutzdUT7nEBTSt5sFeIKPSaVI_lZKL_pVQK9IuxMnJe6u64tvXHqZqz9-_o/s320/ehjaifhd-747580.png" /></a><br />
<br />
In the end, we end up with this (this can be simplified a step further to have average notation.:<br />
<br />
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFf284-_n7WO6VV8l69BLA2AYbR6_mekCWzO6gKc8IxQJUU_55Lc8e5RSQZtgC-Quf7RyC-quixf9bJcshyphenhyphen80as9WTmf-N8skN3Ix_CUJ6Rx9U0TB1C-gYXzpFL-JPx_CSbx7U49yTb5c/s1600/ihgfeegb-749072.png"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5898706149239061954" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhFf284-_n7WO6VV8l69BLA2AYbR6_mekCWzO6gKc8IxQJUU_55Lc8e5RSQZtgC-Quf7RyC-quixf9bJcshyphenhyphen80as9WTmf-N8skN3Ix_CUJ6Rx9U0TB1C-gYXzpFL-JPx_CSbx7U49yTb5c/s320/ihgfeegb-749072.png" /></a><br />
<br />
Anyway, it is relatively easy to build a query that returns these parameters. Below is the SQL query that I use for linear regression. This query will work in MySql and Microsoft SQL Server. Depending on whether other platforms have the functions required (ex. Postgres, Oracle, IBM DB2), it may work there as well. Beware of how your DB platform handles summations as you may run into numerical issues on some data sets:<br />
<br />
<hr size="2" width="100%" />
-- Developed by Mike Burr<br />
-- This query calculates a linear regression <br />
-- in the form y = a + bx and calculates<br />
-- the correlation coefficient for the source data<br />
<br />
<br />
select a as 'a',<br />
b as 'b',<br />
-- Correlation coefficient<br />
(ss_xy * ss_xy)/ (ss_xx * ss_yy) as 'r_r'<br />
from (<br />
-- In this inner query we calculate the parameters<br />
-- and the correlation coefficient for the linear model <br />
-- that we calculated<br />
<br />
select <br />
((avg_yi * sum_xi_xi) - (avg_xi * sum_xi_yi )) /<br />
(sum_xi_xi-(n* avg_xi * avg_xi)) <br />
as 'a',<br />
<br />
(sum_xi_yi - (n * avg_xi * avg_yi)) /<br />
(sum_xi_xi - (n * avg_xi * avg_xi)) <br />
as 'b',<br />
<br />
sum_xi_xi - (n * avg_xi * avg_xi ) <br />
as 'ss_xx',<br />
<br />
sum_yi_yi - (n * avg_yi * avg_yi ) <br />
as 'ss_yy',<br />
<br />
sum_xi_yi - (n * avg_xi * avg_yi )<br />
as 'ss_xy'<br />
<br />
from (<br />
-- In this inner query, we build the <br />
-- variables used in the linear regression <br />
-- calculation<br />
<br />
select avg(y) as 'avg_yi',<br />
avg(x) as 'avg_xi',<br />
count(x) as 'n',<br />
sum(x*x) as 'sum_xi_xi',<br />
sum(y*y) as 'sum_yi_yi',<br />
sum(x*y) as 'sum_xi_yi',<br />
sum(x) as 'sum_xi' <br />
from (<br />
<br />
-- Insert source data query here<br />
-- Alias the x-variable column as 'x'<br />
-- Alias the y-variable column as 'y'<br />
<br />
) as source_data<br />
) as regression<br />
) as final_parameters<br />
<br />
<hr size="2" width="100%" />
<br />
<a href="http://mikemstech.blogspot.com/2014/07/mikes-big-data-data-mining-and.html" target="_blank">Back to Mike's Big Data, Data Mining, and Analytics Tutorial</a><br />
<br />
<br />
<br />
<br />
<br />
<br />Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com1tag:blogger.com,1999:blog-7503353345181123469.post-24499840900841139502013-06-17T07:12:00.002-07:002013-06-17T07:12:36.660-07:00How to Prepare for A Wildfire Related EvacuationI had an experience on Tuesday that I hope not too many people have. I ended up getting evacuated from the Black Forest wildfire near Colorado Springs while I was visiting my parents who live on Herring Road (near a couple of the most severe burn areas so far). I was able to keep a relatively clear head and was able to help my parents evacuate, themselves, their grand kids, and all of their pets besides a horse and a cat (who are now confirmed to be safe). I also helped with a couple of basics with getting their home ready for a forest fire to occur and getting some of their irreplaceable possessions packed and out of harm's way.<br />
<br />
Even though this post is outside of my normal area, I want to reflect on some basics for home preparation and how I approached my evacuation experience to help my parents. This post will break down three areas and identify: what are the highest priorities for evacuation? How do you prepare your home and other structures before you evacuate? <br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpciS1l5dL3t0d9mIAj7_y_rub1vZh7bGpaSK5a6iAx9q1dKZ0Q-QTqIQdyEOr-i7gVpyg2TeWRZZFrW-XMHDY45VJOvwgFMCJApY780yf__gLU4hSQypY63g10O7ALaTipZF5JQtN8tc/s1600/WP_000752-788792.jpg" style="margin-left: 1em; margin-right: 1em;"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5890454403773451746" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgpciS1l5dL3t0d9mIAj7_y_rub1vZh7bGpaSK5a6iAx9q1dKZ0Q-QTqIQdyEOr-i7gVpyg2TeWRZZFrW-XMHDY45VJOvwgFMCJApY780yf__gLU4hSQypY63g10O7ALaTipZF5JQtN8tc/s320/WP_000752-788792.jpg" /></a></div>
<br />
<br />
<b>What are the typical stages of an evacuation?</b><br />
<ul>
<li><b>Pre-evacuation/voluntary evacuation</b><b>:</b> Danger is headed your way, but you may have some time to get things ready to go. You can probably get more than just people/pets out and <br /> </li>
<li><b>Mandatory evacuation:</b> You've either received a reverse-911 call or you have a first responder knocking on your door. There is a clear and present danger and you need to leave immediately so that you aren't killed in the wildfire. You should get people (and pets if there is time our) and go immediately. There is no time to pack possessions and you'll need to hope for the best at this point.</li>
<li><span style="color: #cc0000;"><b>You should start packing and preparing as soon as you are aware of a possible threat to your property. By the time evacuation becomes mandatory, it is already too late to pack/prepare and any delay could mean the difference between life and death.</b></span> <span style="color: #cc0000;"><b>You might even consider packing if there is an elevated fire danger in your area, but no fire yet...</b></span><br /> </li>
</ul>
<b>So... what are the priorities with wildfire evacuation?</b><br />
<br />
<ol>
<li><b>Get all of the people out! </b>This is the primary concern that you and the first responders share. Wildfires can be extraordinarily hot and there is likely no safe place to "wait it out." If you get an mandatory evacuation notice or there is a clear and present danger, don't wait... get out... Go away from the fire and smoke if possible, and only travel through areas with flame and smoke if there are no reasonable alternatives (ex. driving through open fields, across terrain, etc). There's a good chance that if the fire is moving fast enough and is hot enough, there is no possible search and rescue option that first responders can exercise to get you out.<br /> </li>
<li><b>Pets and livestock.</b> This follows the "Life is irreplaceable" ideology above. When given a choice of something to lose, most people would rather lose a material possession than a pet. If you have enough time, get your pets out. <b>If you can't transport certain pets (horses, cattle, sheep, pigs, etc), attaching halters/harnesses and opening the gates may be your only option. If possible, ensure that all gates to the nearest road or open space are open to provide an escape route. Consider cutting fences and other obstructions to the nearest road if the fire is moving in the direction that will cut out possible escape routes through open gates. </b> Volunteer organizations and first responders mobilize to move "found" pets to the edges of the wildfire areas when possible so that they can safely be taken to boarding areas that are set up for disaster relief. Additionally, first responders may work to take down fences in areas where there are a lot of livestock properties to allow livestock to escape to fire boundaries.<br /> </li>
<li><b>Irreplaceable and difficult-to-replace material possessions.</b> If you have material possessions that cannot be replaced, you may try to pack as many as you can before you need to leave. From highest to lowest, here's what I think someone should take:</li>
<ul>
<li>Required Medications and a first aid kit.<br /> </li>
<li>Cell phone/charger<br /> </li>
<li>Tools to help clear a defensible space around yourself in the event of a breakdown. This includes shovel, rake, hatchet/chainsaw, fire extinguisher, water, particulate masks or wet cloth (to assist with breathing in the presence of heavy smoke).<br /> </li>
<li>Photo albums and photo storage devices. <br /> </li>
<li>Family heirlooms in the form of books, letters, etc.<br /> </li>
<li>Family Photo/Video Blu-Ray, DVD, CD-ROM, VHS, Beta</li>
<li>Laptops, tablets, MP3 players (IPod, Zune, etc), and other mobile devices.</li>
<li>Computers (you really only need the "tower" and any external storage [hard drives, tape drives, and media]). Also remember password lists and any USB drives or smart cards that "unlock" the encryption on your computer.<br /> </li>
<li>Uncashed checks, cash, and stock/bearer bond certificates. If you are insured and these are declared items, then it might only be an inconvenience to have to replace these items.</li>
<li>Records for un-invoiced work if you have a home-based business or store store records in the property that is threatened.</li>
<li>Accounting records for a home based business.<br /> </li>
<li>Signed contracts that are not filed with a county clerk or secretary of state, business incorporation documents, LLC formation, partnership agreements, real estate title records, motor vehicle titles, birth certificates, passports, tax records, and other important legal documents. These records may be retrieved from a secretary of state or county clerk and recorder if they were required to be filed. <br /> </li>
<li>Firearms and ammunition that are not stored in fireproof safes. Discharging firearms/ammunition present a danger to first responders working to fight the wildfire and save structures. If you can't take these with you, then put them in a location that will minimize their impact, such as a filled bathtub, bucket of water, metal box, stove, freezer, or refrigerator. <b>If the structure burns down, you don't want first responders to be hit with discharging ammunition.</b></li>
<li>Other irreplaceable items, such as family heirlooms and antiques.</li>
<li>Finally, at the very bottom of the list, pack easily replaceable items as if you are packing for a trip. This includes clothes, food, water, toiletries, etc.<br /> </li>
</ul>
<li><b>Make any possible preparations for the structures that will burn.</b> If you have time and you have the ability, you might take the following precautions to help firefighters protect your structures. I list these from the easiest to hardest.</li>
</ol>
<blockquote>
<ul>
<li>If there is time, shut off the power to your structures. This will help change the fire from a Type 3 (electrical fire) to Type 1 (regular combustible organic solid) and allow the firefighters to use water directly without risk of electrocution and without aggravating the fire due to electricity. </li>
<li>Create a defensible boundary around your structures. Firefighters typically try to create a fire-line that is 1.5x the height of the tallest nearby object that will burn.<br /> <div align="center">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhayuPzA_KMTTvAde302c0XxaKKHMiFTHiFpOxhg-HJUNbSdOOr4Mv5SrnSSQJS3c3KxIMPRayRyJtUzUHSl52ppiyFjqRx5ciU2iv0Ev13XrawIfKObnYkDV-G-qA7VRfxq7yodQPCLpA/s1600/perimeter-792680.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5890454411810542978" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhayuPzA_KMTTvAde302c0XxaKKHMiFTHiFpOxhg-HJUNbSdOOr4Mv5SrnSSQJS3c3KxIMPRayRyJtUzUHSl52ppiyFjqRx5ciU2iv0Ev13XrawIfKObnYkDV-G-qA7VRfxq7yodQPCLpA/s320/perimeter-792680.jpg" /></a></div>
</li>
<ul>
<li>Water the top of your structure and surrounding areas. We started a sprinkler on the roof shortly after recognizing that the approaching fire presented a credible threat. If you have buckets/trash cans that can be filled with water, these can be placed in strategic areas to help cool down areas where the fire is likely to approach from.<br /> </li>
<li>Remove any flammables/accelerants from your structures. This includes gasoline cans, paints, mineral spirits, varnishes, barbecues, firewood, and propane/kerosene tanks. Place these items in a clear area away from the structures as these items are likely to explode and the heat should be directed away from your structures.. <br /> </li>
<li>Clear combustible material (pine cones/needles/leaves/plants) away from the structures.</li>
<li>Fill buckets and other containers with water and place them in strategic areas around structures that may be burned.<br /> </li>
<li> <div align="center">
<div align="left">
If there is time and you have the ability/equipment, cut nearby trees and drag them away from the structure. The main risks from burning trees involve a burning tree falling onto a structure and radiant heat. The heat of the fire may still cause spontaneous combustion of the structures, but you can prevent a falling burning tree from landing on the structure and causing it to burn from direct flame contact. To cut a tree, first cut a notch in the direction of the fall and then cut a line through the tree to a point slightly above the notch from the side away from the fall. <span style="color: #cc0000;">Do not fall trees if you lack the proper equipment/ability or the fall threatens power lines or other structures!</span></div>
<span style="color: #cc0000;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQGF-jUkkj1vDWHcM7NrCmyMKITYiLmbKMYeARZPAtblSz2hKowmFnQTL3yGVsRvNpLcG8tK7ZRbyKRw5XI9E9dR640LF0mDSXNj_TvDWrDdcL0laT6ICrl3cxIyxjLEH_Kdpt8YWxaD4/s1600/Basic+tree+removal-794096.jpg"><img alt="" border="0" id="BLOGGER_PHOTO_ID_5890454421900181730" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjQGF-jUkkj1vDWHcM7NrCmyMKITYiLmbKMYeARZPAtblSz2hKowmFnQTL3yGVsRvNpLcG8tK7ZRbyKRw5XI9E9dR640LF0mDSXNj_TvDWrDdcL0laT6ICrl3cxIyxjLEH_Kdpt8YWxaD4/s320/Basic+tree+removal-794096.jpg" /></a></span></div>
</li>
</ul>
</ul>
</blockquote>
<br />Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com0tag:blogger.com,1999:blog-7503353345181123469.post-84603709527495048122013-05-06T21:21:00.001-07:002013-05-06T21:33:29.584-07:00Deleting Entries in Non-Microsoft LDAP Directories in .Net and PowerShellIn this series on working with non-Microsoft directories in PowerShell and .Net<br />
<br />
<ul>
<li><a href="http://mikemstech.blogspot.com/2013/03/searching-non-microsoft-ldap.html" target="_blank">Searching</a></li>
<li><a href="http://mikemstech.blogspot.com/2013/05/adding-objects-to-non-microsoft-ldap.html" target="_blank">Adding Entries</a></li>
<li><a href="http://mikemstech.blogspot.com/2013/05/moving-and-renaming-objects-in-non.html" target="_blank">Moving and Renaming Entries</a></li>
<li><a href="http://mikemstech.blogspot.com/2013/05/updating-attributes-in-non-microsoft.html" target="_blank">Updating Attributes</a></li>
<li><a href="http://mikemstech.blogspot.com/2013/05/deleting-entries-in-non-microsoft-ldap.html" target="_blank">Deleting Entries</a></li>
</ul>
A previous post of mine that covered LDAP searches in non-Microsoft
Active Directory LDAP directories (ex. OpenLDAP, Oracle Internet
Directory, Novell eDirectory, etc.) gained a fair amount of popularity
and I received requests to follow up on it to provide instructions on
performing other LDAP functions using the .Net Framework and PowerShell.
<br />
<br />
Continuing from my last post, I went ahead and set up an OpenLDAP server
for demonstration purposes utilizing the core, cosine, and
inetorgperson schemas. I have prepopulated it with the following
objects:<br />
<br />
<tt>dn: dc=mikesblog,dc=lan<br />
objectclass: dcObject<br />
objectclass: organization<br />
o: Mikes Technology Blog<br />
dc: mikesblog<br />
<br />
dn: cn=Manager,dc=mikesblog,dc=lan<br />
objectclass: organizationalRole<br />
cn: Manager<br />
<br />
dn: ou=testou1,dc=mikesblog,dc=lan<br />
objectclass: organizationalUnit<br />
objectclass: top<br />
ou: testou1<br />
description: My first test OU<br />
<br />
dn: cn=mike,ou=testou1,dc=mikesblog,dc=lan<br />
objectClass: person<br />
objectclass: inetorgperson<br />
givenName: Mike<br />
sn: Burr<br />
uid: mike<br />
<br />
dn: ou=testou2,dc=mikesblog,dc=lan<br />
objectclass: organizationalUnit<br />
objectclass: top<br />
ou: testou2<br />
description: My second test OU<br />
<br />
</tt>In this example, we will delete the testuser user in testou2.<br />
<br />
To accomplish this, we will use the .Net framework classes in the <b>System.DirectoryServices.Protocols</b> namespace. The <b>LdapConnection</b> class gives our application connectivity to the LDAP server where we can provide an <b>DeleteRequest</b> object and receive an <b>Delete</b><b>Reply</b>. In the <b>Delete</b><b>Request</b>, we specify via the Modifications property what attribute additions, modifications, and deletions need to occur.<br />
<br />
The sample code below is designed to demonstrate how to modify
attributes for an LDAP entry, in practice this might be designed to use
the command pattern instead of the hardcoded transaction script below.<br />
<br />
The first code example shows some discussion of the delete subtree
server control. This is typically used to delete an object and all
objects under it in a directory tree. It is not supported on all
platforms. Microsoft and IBM publicize the ability to use this server
control with their LDAP implementations, but others, such as OpenLDAP
(as of 2.4) do not support it.<br />
<br />
Let's get to it... The sample C#.Net code:<br />
<br />
<br />
<hr size="2" width="100%" />
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
Connects to myopenldap.mikesblog.lan </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
on the standard port</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">LdapConnection</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> c = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">LdapConnection</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"myopenldap.mikesblog.lan:389"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//Set
session options</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">c.SessionOptions.SecureSocketLayer
= </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">false</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">c.SessionOptions.ProtocolVersion
= 3;</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
Pick Authentication type:</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
Anonymous, Basic, Digest, DPA (Distributed Password Authentication),</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
External, Kerberos, Msn, Negotiate, Ntlm, Sicily </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">c.AuthType
= </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">AuthType</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Basic;</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
Gets username and password. There are better </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
ways to do this more securely...</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
but that's not the topic of this post.</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Write(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Enter
Username: "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> username = </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.ReadLine();</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine();</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Write(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Enter
Password: "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> password = </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.ReadLine();</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
Bind with the network credentials. Depending on the type of server, </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
the username will take different forms. Authentication type is controlled</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
above with the AuthType</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">c.Bind(</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> System.Net.</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">NetworkCredential</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">(username,
password));</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
We are going to delete the user below (LDIF Below)</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">/*
</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">dn:
cn=testuser,ou=testou2,dc=mikesblog,dc=lan</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">objectclass: person</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">objectclass: inetorgperson</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">uid:
testuser</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">givenName: Test</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">sn: User</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<br />
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">*/</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">DeleteRequest</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> r = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">DeleteRequest</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">();</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//What
are we deleting?</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">r.DistinguishedName
= </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"uid=testuser,ou=testou2,dc=mikesblog,dc=lan"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
Use the delete subtree server control to </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
remove any objects under the targeted object</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
Not all LDAP implementations support this, so this may </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
throw an exception:</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">/*</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">System.DirectoryServices.Protocols.DirectoryOperationException:
A protocol error occurred.</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">at
System.DirectoryServices.Protocols.LdapConnection.ConstructResponse(Int32
messageId, LdapOperation operation, ResultAll resultType, TimeSpan
requestTimeOut, Boolean exceptionOnTimeOut)</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">at
System.DirectoryServices.Protocols.LdapConnection.SendRequest(DirectoryRequest
request, TimeSpan requestTimeout)</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">at
System.DirectoryServices.Protocols.LdapConnection.SendRequest(DirectoryRequest
request)</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>* To figure out what hapened, catch the
DirectoryOperationException </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>* and look at Response.ErrorMessage:</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">try
{</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">...
</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">}</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">catch
(DirectoryOperationException e)</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">{</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>Console.WriteLine(e.Response.ErrorMessage);</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">}</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>* Since OpenLDAP doesn't support this control,
it returns: </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>* treeDelete control value not absent</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>* </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>* Depending ont the server's configuration,
it'll also show up in the OpenLDAP logs</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">May<span style="mso-spacerun: yes;"> </span>6 21:46:06 myopenldap slapd[61167]: conn=1032
op=1 RESULT tag=107 err=2 text=treeDelete control value not absent</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">May<span style="mso-spacerun: yes;"> </span>6 21:46:06 myopenldap slapd[61167]: conn=1032
op=1 do_delete: get_ctrls failed</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">May<span style="mso-spacerun: yes;"> </span>6 21:47:21 myopenldap slapd[61167]: conn=1032
fd=18 closed (connection lost)</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>*/</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">
</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//Uncomment the line below for subtree delete (if your server supports it)</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<!--[if gte mso 9]><xml>
<o:OfficeDocumentSettings>
<o:AllowPNG/>
</o:OfficeDocumentSettings>
</xml><![endif]-->
<br />
<div class="MsoNormal">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-highlight: white;">//r.Controls.Add(new
DirectoryControl("1.2.840.113556.1.4.805", null, true, true));</span></div>
<!--[if gte mso 9]><xml>
<w:WordDocument>
<w:View>Normal</w:View>
<w:Zoom>0</w:Zoom>
<w:TrackMoves/>
<w:TrackFormatting/>
<w:PunctuationKerning/>
<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>X-NONE</w:LidThemeAsian>
<w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
<w:Compatibility>
<w:BreakWrappedTables/>
<w:SnapToGridInCell/>
<w:WrapTextWithPunct/>
<w:UseAsianBreakRules/>
<w:DontGrowAutofit/>
<w:SplitPgBreakAndParaMark/>
<w:EnableOpenTypeKerning/>
<w:DontFlipMirrorIndents/>
<w:OverrideTableStyleHps/>
</w:Compatibility>
<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:lMargin m:val="0"/>
<m:rMargin m:val="0"/>
<m:defJc m:val="centerGroup"/>
<m:wrapIndent m:val="1440"/>
<m:intLim m:val="subSup"/>
<m:naryLim m:val="undOvr"/>
</m:mathPr></w:WordDocument>
</xml><![endif]--><!--[if gte mso 9]><xml>
<w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"
DefSemiHidden="true" DefQFormat="false" DefPriority="99"
LatentStyleCount="267">
<w:LsdException Locked="false" Priority="0" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Normal"/>
<w:LsdException Locked="false" Priority="9" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="heading 1"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/>
<w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/>
<w:LsdException Locked="false" Priority="39" Name="toc 1"/>
<w:LsdException Locked="false" Priority="39" Name="toc 2"/>
<w:LsdException Locked="false" Priority="39" Name="toc 3"/>
<w:LsdException Locked="false" Priority="39" Name="toc 4"/>
<w:LsdException Locked="false" Priority="39" Name="toc 5"/>
<w:LsdException Locked="false" Priority="39" Name="toc 6"/>
<w:LsdException Locked="false" Priority="39" Name="toc 7"/>
<w:LsdException Locked="false" Priority="39" Name="toc 8"/>
<w:LsdException Locked="false" Priority="39" Name="toc 9"/>
<w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/>
<w:LsdException Locked="false" Priority="10" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Title"/>
<w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
<w:LsdException Locked="false" Priority="11" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/>
<w:LsdException Locked="false" Priority="22" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Strong"/>
<w:LsdException Locked="false" Priority="20" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/>
<w:LsdException Locked="false" Priority="59" SemiHidden="false"
UnhideWhenUsed="false" Name="Table Grid"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/>
<w:LsdException Locked="false" Priority="1" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 1"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 1"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 1"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/>
<w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/>
<w:LsdException Locked="false" Priority="34" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/>
<w:LsdException Locked="false" Priority="29" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Quote"/>
<w:LsdException Locked="false" Priority="30" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 1"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 1"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 2"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 2"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 2"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 2"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 2"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 3"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 3"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 3"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 3"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 3"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 4"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 4"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 4"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 4"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 4"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 5"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 5"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 5"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 5"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 5"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/>
<w:LsdException Locked="false" Priority="60" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Shading Accent 6"/>
<w:LsdException Locked="false" Priority="61" SemiHidden="false"
UnhideWhenUsed="false" Name="Light List Accent 6"/>
<w:LsdException Locked="false" Priority="62" SemiHidden="false"
UnhideWhenUsed="false" Name="Light Grid Accent 6"/>
<w:LsdException Locked="false" Priority="63" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/>
<w:LsdException Locked="false" Priority="64" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/>
<w:LsdException Locked="false" Priority="65" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/>
<w:LsdException Locked="false" Priority="66" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/>
<w:LsdException Locked="false" Priority="67" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/>
<w:LsdException Locked="false" Priority="68" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/>
<w:LsdException Locked="false" Priority="69" SemiHidden="false"
UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/>
<w:LsdException Locked="false" Priority="70" SemiHidden="false"
UnhideWhenUsed="false" Name="Dark List Accent 6"/>
<w:LsdException Locked="false" Priority="71" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/>
<w:LsdException Locked="false" Priority="72" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful List Accent 6"/>
<w:LsdException Locked="false" Priority="73" SemiHidden="false"
UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/>
<w:LsdException Locked="false" Priority="19" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/>
<w:LsdException Locked="false" Priority="21" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/>
<w:LsdException Locked="false" Priority="31" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/>
<w:LsdException Locked="false" Priority="32" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/>
<w:LsdException Locked="false" Priority="33" SemiHidden="false"
UnhideWhenUsed="false" QFormat="true" Name="Book Title"/>
<w:LsdException Locked="false" Priority="37" Name="Bibliography"/>
<w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/>
</w:LatentStyles>
</xml><![endif]--><!--[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-top:0in;
mso-para-margin-right:0in;
mso-para-margin-bottom:10.0pt;
mso-para-margin-left:0in;
line-height:115%;
mso-pagination:widow-orphan;
font-size:11.0pt;
font-family:"Calibri","sans-serif";
mso-ascii-font-family:Calibri;
mso-ascii-theme-font:minor-latin;
mso-hansi-font-family:Calibri;
mso-hansi-theme-font:minor-latin;}
</style>
<![endif]--><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span>
<br />
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//Actually
process the request through the server</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">DeleteResponse</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> re = (</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">DeleteResponse</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">)c.SendRequest(r);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">if</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (re.ResultCode != </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">ResultCode</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Success)</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">{</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Failed!"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"ResultCode:
{0}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, re.ResultCode);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Message:
{0}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, re.ErrorMessage);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">}</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-highlight: white;">.Read();</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-highlight: white;"></span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-highlight: white;"></span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-highlight: white;"></span>
<br />
<hr size="2" width="100%" />
<br />
Not to disappoint, below is the PowerShell port of the above code.<br />
<br />
<hr size="2" width="100%" />
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Mike Burr</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Script Connects to and Deletes OpenLDAP directory entry</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Load the assemblies</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">[</span><span style="color: teal; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">System.Reflection.Assembly</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">]::</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">LoadWithPartialName(<span style="color: darkred;">"System.DirectoryServices.Protocols"</span>)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">[</span><span style="color: teal; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">System.Reflection.Assembly</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">]::</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">LoadWithPartialName(<span style="color: darkred;">"System.Net"</span>)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Connects to myopenldap.mikesblog.lan using SSL on a
non-standard port</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$c</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: blue;">New-Object</span> <span style="color: blueviolet;">System.DirectoryServices.Protocols.LdapConnection</span>
<span style="color: darkred;">"myopenldap.mikesblog.lan:389"</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Set session options</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$c</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">SessionOptions<span style="color: darkgrey;">.</span>SecureSocketLayer <span style="color: darkgrey;">=</span>
<span style="color: orangered;">$false</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$c</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">SessionOptions<span style="color: darkgrey;">.</span>ProtocolVersion <span style="color: darkgrey;">=</span>
<span style="color: purple;">3</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># Pick Authentication type:</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># Anonymous, Basic, Digest, DPA (Distributed Password
Authentication),</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># External, Kerberos, Msn, Negotiate, Ntlm, Sicily </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$c</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">AuthType
<span style="color: darkgrey;">=</span> <span style="color: darkgrey;">[</span><span style="color: teal;">System.DirectoryServices.Protocols.AuthType</span><span style="color: darkgrey;">]::</span>Basic</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># Gets username and password. </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$user</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: blue;">Read-Host</span> <span style="color: navy;">-Prompt</span> <span style="color: darkred;">"Username"</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$pass</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: blue;">Read-Host</span> <span style="color: navy;">-AsSecureString</span>
<span style="color: darkred;">"Password"</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$credentials</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: blue;">new-object</span> <span style="color: darkred;">"System.Net.NetworkCredential"</span> <span style="color: navy;">-ArgumentList</span> <span style="color: orangered;">$user</span><span style="color: darkgrey;">,</span><span style="color: orangered;">$pass</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># Bind with the network credentials. Depending on the type of
server, </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># the username will take different forms. Authentication type
is controlled</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># above with the AuthType</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$c</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">Bind(<span style="color: orangered;">$credentials</span>)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># We are going to Delete this object (LDIF Below)</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># dn: cn=testuser,ou=testou2,dc=mikesblog,dc=lan</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># objectclass: person</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># objectclass: inetorgperson</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># givenName: Test </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># sn: User</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># uid: testuser</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$r</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> (<span style="color: blue;">new-object</span> <span style="color: darkred;">"System.DirectoryServices.Protocols.DeleteRequest"</span>)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$r</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">DistinguishedName
<span style="color: darkgrey;">=</span> <span style="color: darkred;">"cn=testuser,ou=testou2,dc=mikesblog,dc=lan"</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#See the code example above for discussion on the delete
subtree control</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># $r.Controls.Add((New-Object "System.DirectoryServices.Protocols.DirectoryControl"
-ArgumentList "1.2.840.113556.1.4.805",$null,$true,$true ))</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Actually process the request through the server</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$re</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: orangered;">$c</span><span style="color: darkgrey;">.</span>SendRequest(<span style="color: orangered;">$r</span>)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkblue; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">if</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> (<span style="color: orangered;">$re</span><span style="color: darkgrey;">.</span>ResultCode <span style="color: darkgrey;">-ne</span>
<span style="color: darkgrey;">[</span><span style="color: teal;">System.directoryServices.Protocols.ResultCode</span><span style="color: darkgrey;">]::</span>Success) </span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">{</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">write-host</span> <span style="color: darkred;">"Failed!"</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">write-host</span>
(<span style="color: darkred;">"ResultCode: "</span> <span style="color: darkgrey;">+</span> <span style="color: orangered;">$re</span><span style="color: darkgrey;">.</span>ResultCode)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">write-host</span>
(<span style="color: darkred;">"Message: "</span> <span style="color: darkgrey;">+</span> <span style="color: orangered;">$re</span><span style="color: darkgrey;">.</span>ErrorMessage)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">}
</span></div>
<div class="MsoNormal">
<br /></div>
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span>
<br />
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span>
<br />
<hr size="2" width="100%" />
<br />
<br />
<br />
<br />
<br />
<br />
Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com1tag:blogger.com,1999:blog-7503353345181123469.post-56846766946819794232013-05-06T15:32:00.002-07:002013-05-06T21:33:13.879-07:00Updating Attributes in Non-Microsoft LDAP Directories in .Net and PowerShellIn this series on working with non-Microsoft directories in PowerShell and .Net<br />
<br />
<ul>
<li><a href="http://mikemstech.blogspot.com/2013/03/searching-non-microsoft-ldap.html" target="_blank">Searching</a></li>
<li><a href="http://mikemstech.blogspot.com/2013/05/adding-objects-to-non-microsoft-ldap.html" target="_blank">Adding Entries</a></li>
<li><a href="http://mikemstech.blogspot.com/2013/05/moving-and-renaming-objects-in-non.html" target="_blank">Moving and Renaming Entries</a></li>
<li><a href="http://mikemstech.blogspot.com/2013/05/updating-attributes-in-non-microsoft.html" target="_blank">Updating Attributes</a></li>
<li><a href="http://mikemstech.blogspot.com/2013/05/deleting-entries-in-non-microsoft-ldap.html" target="_blank">Deleting Entries</a></li>
</ul>
A previous post of mine that covered LDAP searches in non-Microsoft
Active Directory LDAP directories (ex. OpenLDAP, Oracle Internet
Directory, Novell eDirectory, etc.) gained a fair amount of popularity
and I received requests to follow up on it to provide instructions on
performing other LDAP functions using the .Net Framework and PowerShell.
<br />
<br />
Continuing from my last post, I went ahead and set up an OpenLDAP server
for demonstration purposes utilizing the core, cosine, and
inetorgperson schemas. I have prepopulated it with the following
objects:<br />
<br />
<tt>dn: dc=mikesblog,dc=lan<br />
objectclass: dcObject<br />
objectclass: organization<br />
o: Mikes Technology Blog<br />
dc: mikesblog<br />
<br />
dn: cn=Manager,dc=mikesblog,dc=lan<br />
objectclass: organizationalRole<br />
cn: Manager<br />
<br />
dn: ou=testou1,dc=mikesblog,dc=lan<br />
objectclass: organizationalUnit<br />
objectclass: top<br />
ou: testou1<br />
description: My first test OU<br />
<br />
dn: cn=mike,ou=testou1,dc=mikesblog,dc=lan<br />
objectClass: person<br />
objectclass: inetorgperson<br />
givenName: Mike<br />
sn: Burr<br />
uid: mike<br />
<br />
dn: ou=testou2,dc=mikesblog,dc=lan<br />
objectclass: organizationalUnit<br />
objectclass: top<br />
ou: testou2<br />
description: My second test OU<br />
<br />
</tt>In this example, we will modify the testuser user in testou1 to be
contained in a new container (ou=testou2,dc=mikesblog,dc=lan).
Optionally, we can also rename the user (I show the field below, but
don't actually rename the user). <br />
<br />
To accomplish this, we will use the .Net framework classes in the <b>System.DirectoryServices.Protocols</b> namespace. The <b>LdapConnection</b> class gives our application connectivity to the LDAP server where we can provide an <b>ModifyRequest</b> object and receive an <b>ModifyReply</b>. In the <b>ModifyRequest</b>, we specify via the Modifications property what attribute additions, modifcations, and deletions need to occur.<br />
<br />
The sample code below is designed to demonstrate how to modify
attributes for an LDAP entry, in practice this might be designed to use
the command pattern, content enricher pattern, and decorator pattern
instead of the hardcoded transaction script below.<br />
<br />
Let's get to it... The sample C#.Net code:<br />
<br />
<br />
<hr size="2" width="100%" />
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
Connects to myopenldap.mikesblog.lan </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
on the standard port</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">LdapConnection</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> c = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">LdapConnection</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"myopenldap.mikesblog.lan:389"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//Set
session options</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">c.SessionOptions.SecureSocketLayer
= </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">false</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">c.SessionOptions.ProtocolVersion
= 3;</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
Pick Authentication type:</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
Anonymous, Basic, Digest, DPA (Distributed Password Authentication),</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
External, Kerberos, Msn, Negotiate, Ntlm, Sicily </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">c.AuthType
= </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">AuthType</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Basic;</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
Gets username and password. There are better </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
ways to do this more securely...</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
but that's not the topic of this post.</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Write(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Enter
Username: "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> username = </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.ReadLine();</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine();</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Write(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Enter
Password: "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> password = </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.ReadLine();</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
Bind with the network credentials. Depending on the type of server, </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
the username will take different forms. Authentication type is controlled</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
above with the AuthType</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">c.Bind(</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> System.Net.</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">NetworkCredential</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">(username,
password));</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
We are going to modify this object (LDIF Below)</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">/*
</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">dn:
cn=testuser,ou=testou2,dc=mikesblog,dc=lan</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">objectclass:
person</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">objectclass:
inetorgperson</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">givenName:
Test </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">sn:
User</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">uid:
testuser</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">*/</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">ModifyRequest</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> r = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">ModifyRequest</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">();</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//What
are we changing?</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">r.DistinguishedName
= </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"cn=testuser,ou=testou2,dc=mikesblog,dc=lan"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//First
part of the request, delete the UID attribute for testuser</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">r.Modifications.Add(</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">DirectoryAttributeModification</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">() {</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>Name = </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"uid"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">,</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>Operation = </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">DirectoryAttributeOperation</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Delete</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>}</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//Second
part of the request, add the UID attribute for testuser</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">DirectoryAttributeModification</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> a = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">DirectoryAttributeModification</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">();</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">a.Name
= </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"uid"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">a.Operation
= </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">DirectoryAttributeOperation</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Add;</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//add
values of the attribute</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">a.Add(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"testuseroops"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">r.Modifications.Add(a);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//Third
part of the request, replace the UID attribute for testuser</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">DirectoryAttributeModification</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> m = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">DirectoryAttributeModification</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">();</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">m.Name
= </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"uid"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">m.Operation
= </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">DirectoryAttributeOperation</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Replace;</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//add
value(s) of the attribute</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">m.Add(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"testuser"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">r.Modifications.Add(m);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//Actually
process the request through the server</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">ModifyResponse</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> re = (</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">ModifyResponse</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">)c.SendRequest(r);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">if</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (re.ResultCode != </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">ResultCode</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Success)</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">{</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Failed!"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"ResultCode:
{0}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, re.ResultCode);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Message:
{0}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, re.ErrorMessage);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">}</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-highlight: white;">.Read();</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-highlight: white;"></span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-highlight: white;"></span>
<br />
<hr size="2" width="100%" />
<br />
Not to disappoint, below is the PowerShell port of the above code.<br />
<br />
<hr size="2" width="100%" />
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Mike Burr</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Script Connects to and Modifies Objects in OpenLDAP directory</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Load the assemblies</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">[</span><span style="color: teal; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">System.Reflection.Assembly</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">]::</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">LoadWithPartialName(<span style="color: darkred;">"System.DirectoryServices.Protocols"</span>)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">[</span><span style="color: teal; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">System.Reflection.Assembly</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">]::</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">LoadWithPartialName(<span style="color: darkred;">"System.Net"</span>)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Connects to myopenldap.mikesblog.lan on the standard port</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$c</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: blue;">New-Object</span> <span style="color: blueviolet;">System.DirectoryServices.Protocols.LdapConnection</span>
<span style="color: darkred;">`<br />
"myopenldap.mikesblog.lan:389"</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Set session options</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$c</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">SessionOptions<span style="color: darkgrey;">.</span>SecureSocketLayer <span style="color: darkgrey;">=</span>
<span style="color: orangered;">$false</span>;</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$c</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">SessionOptions<span style="color: darkgrey;">.</span>ProtocolVersion <span style="color: darkgrey;">=</span>
<span style="color: purple;">3</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># Pick Authentication type:</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># Anonymous, Basic, Digest, DPA (Distributed Password
Authentication),</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># External, Kerberos, Msn, Negotiate, Ntlm, Sicily </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$c</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">AuthType
<span style="color: darkgrey;">=</span> <span style="color: darkgrey;">[</span><span style="color: teal;">System.DirectoryServices.Protocols.AuthType</span><span style="color: darkgrey;">]::</span>Basic</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># Gets username and password. </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$user</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: blue;">Read-Host</span> <span style="color: navy;">-Prompt</span> <span style="color: darkred;">"Username"</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$pass</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: blue;">Read-Host</span> <span style="color: navy;">-AsSecureString</span>
<span style="color: darkred;">"Password"</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$credentials</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: blue;">new-object</span> <span style="color: darkred;">"System.Net.NetworkCredential"</span> <span style="color: navy;">-ArgumentList</span> <span style="color: orangered;">$user</span><span style="color: darkgrey;">,</span><span style="color: orangered;">$pass</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># Bind with the network credentials. Depending on the type of
server, </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># the username will take different forms. Authentication type
is controlled</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># above with the AuthType</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$c</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">Bind(<span style="color: orangered;">$credentials</span>);</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># We are going to modify this object (LDIF Below)</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># dn: cn=testuser,ou=testou2,dc=mikesblog,dc=lan</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># objectclass: person</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># objectclass: inetorgperson</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># givenName: Test </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># sn: User</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># uid: testuser<br />
</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span>
</div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$r</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> (<span style="color: blue;">new-object</span> <span style="color: darkred;">"System.DirectoryServices.Protocols.ModifyRequest"</span>)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span><span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$r</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">DistinguishedName
<span style="color: darkgrey;">=</span> <span style="color: darkred;">"cn=testuser,ou=testou2,dc=mikesblog,dc=lan"</span>;</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span>
<br />
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#First part of the request, delete the UID attribute for
testuser</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span>
<br />
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$d</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: blue;">New-Object</span> <span style="color: darkred;">"System.DirectoryServices.Protocols.DirectoryAttributeModification"</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$d</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">Name
<span style="color: darkgrey;">=</span> <span style="color: darkred;">"uid"</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$d</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">Operation
<span style="color: darkgrey;">=</span> <span style="color: darkgrey;">[</span><span style="color: teal;">System.DirectoryServices.Protocols.DirectoryAttributeOperation</span><span style="color: darkgrey;">]::</span>Delete</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$r</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">Modifications<span style="color: darkgrey;">.</span>Add(<span style="color: orangered;">$d</span>)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Second part of the request, add the UID attribute for
testuser</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$a</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: blue;">New-Object</span> <span style="color: darkred;">"System.DirectoryServices.Protocols.DirectoryAttributeModification"</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$a</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">Name
<span style="color: darkgrey;">=</span> <span style="color: darkred;">"uid"</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$a</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">Operation
<span style="color: darkgrey;">=</span> <span style="color: darkgrey;">[</span><span style="color: teal;">System.DirectoryServices.Protocols.DirectoryAttributeOperation</span><span style="color: darkgrey;">]::</span>Add</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#add values of the attribute</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$a</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">Add(<span style="color: darkred;">"testuseroops"</span>)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$r</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">Modifications<span style="color: darkgrey;">.</span>Add(<span style="color: orangered;">$a</span>)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Third part of the request, replace the UID attribute for
testuser</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$m</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: blue;">New-Object</span> <span style="color: darkred;">"System.DirectoryServices.Protocols.DirectoryAttributeModification"</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$m</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">Name
<span style="color: darkgrey;">=</span> <span style="color: darkred;">"uid"</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$m</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">Operation
<span style="color: darkgrey;">=</span> <span style="color: darkgrey;">[</span><span style="color: teal;">System.DirectoryServices.Protocols.DirectoryAttributeOperation</span><span style="color: darkgrey;">]::</span>Replace</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#add value(s) of the attribute</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$m</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">Add(<span style="color: darkred;">"testuser"</span>)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$r</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">Modifications<span style="color: darkgrey;">.</span>Add(<span style="color: orangered;">$m</span>)</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> </span>
</div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Actually process the request through the server</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$re</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: orangered;">$c</span><span style="color: darkgrey;">.</span>SendRequest(<span style="color: orangered;">$r</span>);</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkblue; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">if</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> (<span style="color: orangered;">$re</span><span style="color: darkgrey;">.</span>ResultCode <span style="color: darkgrey;">-ne</span>
<span style="color: darkgrey;">[</span><span style="color: teal;">System.directoryServices.Protocols.ResultCode</span><span style="color: darkgrey;">]::</span>Success) </span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">{</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">write-host</span> <span style="color: darkred;">"Failed!"</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">write-host</span>
(<span style="color: darkred;">"ResultCode: "</span> <span style="color: darkgrey;">+</span> <span style="color: orangered;">$re</span><span style="color: darkgrey;">.</span>ResultCode)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">write-host</span>
(<span style="color: darkred;">"Message: "</span> <span style="color: darkgrey;">+</span> <span style="color: orangered;">$re</span><span style="color: darkgrey;">.</span>ErrorMessage)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">}
</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span>
<br />
<hr size="2" width="100%" />
<br />
<br />
<br />
<br />
<br />
<br />
Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com1tag:blogger.com,1999:blog-7503353345181123469.post-52483539473919438762013-05-06T14:56:00.002-07:002013-05-06T21:36:04.802-07:00Moving and Renaming Objects in Non-Microsoft LDAP Directories in .Net and PowerShellIn this series on working with non-Microsoft directories in PowerShell and .Net<br />
<br />
<ul>
<li><a href="http://mikemstech.blogspot.com/2013/03/searching-non-microsoft-ldap.html" target="_blank">Searching</a></li>
<li><a href="http://mikemstech.blogspot.com/2013/05/adding-objects-to-non-microsoft-ldap.html" target="_blank">Adding Entries</a></li>
<li><a href="http://mikemstech.blogspot.com/2013/05/moving-and-renaming-objects-in-non.html" target="_blank">Moving and Renaming Entries</a></li>
<li><a href="http://mikemstech.blogspot.com/2013/05/updating-attributes-in-non-microsoft.html" target="_blank">Updating Attributes</a></li>
<li><a href="http://mikemstech.blogspot.com/2013/05/deleting-entries-in-non-microsoft-ldap.html" target="_blank">Deleting Entries</a> </li>
</ul>
<br />
A previous post of mine that covered LDAP searches in non-Microsoft
Active Directory LDAP directories (ex. OpenLDAP, Oracle Internet
Directory, Novell eDirectory, etc.) gained a fair amount of popularity
and I received requests to follow up on it to provide instructions on
performing other LDAP functions using the .Net Framework and PowerShell.
<br />
<br />
Continuing from my last post, I went ahead and set up an OpenLDAP server
for demonstration purposes utilizing the core, cosine, and
inetorgperson schemas. I have prepopulated it with the following
objects:<br />
<br />
<tt>dn: dc=mikesblog,dc=lan<br />
objectclass: dcObject<br />
objectclass: organization<br />
o: Mikes Technology Blog<br />
dc: mikesblog<br />
<br />
dn: cn=Manager,dc=mikesblog,dc=lan<br />
objectclass: organizationalRole<br />
cn: Manager<br />
<br />
dn: ou=testou1,dc=mikesblog,dc=lan<br />
objectclass: organizationalUnit<br />
objectclass: top<br />
ou: testou1<br />
description: My first test OU<br />
<br />
dn: cn=mike,ou=testou1,dc=mikesblog,dc=lan<br />
objectClass: person<br />
objectclass: inetorgperson<br />
givenName: Mike<br />
sn: Burr<br />
uid: mike<br />
<br />
dn: ou=testou2,dc=mikesblog,dc=lan<br />
objectclass: organizationalUnit<br />
objectclass: top<br />
ou: testou2<br />
description: My second test OU<br />
<br />
</tt>In this example, we will modify the testuser user in testou1 to be
contained in a new container (ou=testou2,dc=mikesblog,dc=lan).
Optionally, we can also rename the user (I show the field below, but
don't actually rename the user). <br />
<br />
To accomplish this, we will use the .Net framework classes in the <b>System.DirectoryServices.Protocols</b> namespace. The <b>LdapConnection</b> class gives our application connectivity to the LDAP server where we can provide an <b>ModifyDNRequest</b> object and receive an <b>ModifyDNReply</b>.<br />
<br />
The sample code below is designed to demonstrate how to move or rename
an LDAP entry, in practice this might be designed to use the command
pattern instead of the hardcoded transaction script below.<br />
<br />
Let's get to it... The sample C#.Net code:<br />
<br />
<br />
<hr size="2" width="100%" />
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
Connects to myopenldap.mikesblog.lan </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
on the standard port</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">LdapConnection</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> c = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">LdapConnection</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"myopenldap.mikesblog.lan:389"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//Set
session options</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">c.SessionOptions.SecureSocketLayer
= </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">false</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">c.SessionOptions.ProtocolVersion
= 3;</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
Pick Authentication type:</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
Anonymous, Basic, Digest, DPA (Distributed Password Authentication),</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
External, Kerberos, Msn, Negotiate, Ntlm, Sicily </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">c.AuthType
= </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">AuthType</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Basic;</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
Gets username and password. There are better </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
ways to do this more securely...</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
but that's not the topic of this post.</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Write(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Enter Username:
"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> username = </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.ReadLine();</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine();</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Write(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Enter
Password: "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> password = </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.ReadLine();</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
Bind with the network credentials. Depending on the type of server, </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
the username will take different forms. Authentication type is controlled</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
above with the AuthType</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">c.Bind(</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> System.Net.</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">NetworkCredential</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">(username,
password));</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
We are going to move this object (LDIF Below)</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">/*
</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">dn:
cn=testuser,ou=testou1,dc=mikesblog,dc=lan</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">objectclass:
person</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">objectclass:
inetorgperson</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">givenName:
Test </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">sn:
User</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">uid:
testuser</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//The
OLD dn is:<span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>dn:
cn=testuser,ou=testou1,dc=mikesblog,dc=lan</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//The
NEW dn will be in Test OU 2:</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>dn:
cn=testuser,ou=testou2,dc=mikesblog,dc=lan</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">*/</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">ModifyDNRequest</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> r = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">ModifyDNRequest</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">();</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">r.DeleteOldRdn
= </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">true</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">r.DistinguishedName
= </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"cn=testuser,ou=testou1,dc=mikesblog,dc=lan"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//Change
the name if you want to</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">r.NewName
= </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"cn=testuser"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//Set
the new container</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">r.NewParentDistinguishedName
= </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"ou=testou2,dc=mikesblog,dc=lan"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//Actually
process the request through the server</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">ModifyDNResponse</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> re = (</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">ModifyDNResponse</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">)c.SendRequest(r);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">if</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (re.ResultCode != </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">ResultCode</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Success)</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">{</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Failed!"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"ResultCode:
{0}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, re.ResultCode);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Message:
{0}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, re.ErrorMessage);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">}</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-highlight: white;">.Read();</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-highlight: white;"></span>
<br />
<hr size="2" width="100%" />
<br />
Not to disappoint, below is the PowerShell port of the above code.<br />
<br />
<hr size="2" width="100%" />
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Mike Burr</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Script Connects to and Moves/Renames Objects in OpenLDAP directory</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Load the assemblies</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">[</span><span style="color: teal; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">System.Reflection.Assembly</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">]::</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">LoadWithPartialName(<span style="color: darkred;">"System.DirectoryServices.Protocols"</span>)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">[</span><span style="color: teal; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">System.Reflection.Assembly</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">]::</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">LoadWithPartialName(<span style="color: darkred;">"System.Net"</span>)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Connects to myopenldap.mikesblog.lan on the standard port</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$c</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: blue;">New-Object</span> <span style="color: blueviolet;">System.DirectoryServices.Protocols.LdapConnection</span>
<span style="color: darkred;">`<br />
"myopenldap.mikesblog.lan:389"</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Set session options</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$c</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">SessionOptions<span style="color: darkgrey;">.</span>SecureSocketLayer <span style="color: darkgrey;">=</span>
<span style="color: orangered;">$false</span>;</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$c</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">SessionOptions<span style="color: darkgrey;">.</span>ProtocolVersion <span style="color: darkgrey;">=</span>
<span style="color: purple;">3</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># Pick Authentication type:</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># Anonymous, Basic, Digest, DPA (Distributed Password
Authentication),</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># External, Kerberos, Msn, Negotiate, Ntlm, Sicily </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$c</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">AuthType
<span style="color: darkgrey;">=</span> <span style="color: darkgrey;">[</span><span style="color: teal;">System.DirectoryServices.Protocols.AuthType</span><span style="color: darkgrey;">]::</span>Basic</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># Gets username and password. </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$user</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: blue;">Read-Host</span> <span style="color: navy;">-Prompt</span> <span style="color: darkred;">"Username"</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$pass</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: blue;">Read-Host</span> <span style="color: navy;">-AsSecureString</span>
<span style="color: darkred;">"Password"</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$credentials</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: blue;">new-object</span> <span style="color: darkred;">"System.Net.NetworkCredential"</span> <span style="color: navy;">-ArgumentList</span> <span style="color: orangered;">$user</span><span style="color: darkgrey;">,</span><span style="color: orangered;">$pass</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># Bind with the network credentials. Depending on the type of
server, </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># the username will take different forms. Authentication type
is controlled</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># above with the AuthType</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$c</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">Bind(<span style="color: orangered;">$credentials</span>);</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># We are going to move this object (LDIF Below)</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># dn: cn=testuser,ou=testou1,dc=mikesblog,dc=lan</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># objectclass: person</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># objectclass: inetorgperson</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># givenName: Test </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># sn: User</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># uid: testuser<br />
</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># The Old DN is<br />
</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># dn: cn=testuser,ou=testou1,dc=mikesblog,dc=lan<br />
</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># The New DN is <br />
</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># dn: cn=testuser,out=testou2,dc=mikesblog,dc=lan<br />
</span></div>
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span>
<br />
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$r</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> (<span style="color: blue;">new-object</span> <span style="color: darkred;">"System.DirectoryServices.Protocols.ModifyDNRequest"</span>)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$r</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">DeleteOldRdn
<span style="color: darkgrey;">=</span> <span style="color: blue;">true</span>;</span>
<br />
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">
</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$r</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">DistinguishedName
<span style="color: darkgrey;">=</span> <span style="color: darkred;">"cn=testuser,ou=testou1,dc=mikesblog,dc=lan"</span>;</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Change the name if you want to, or set it to be the same</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$r</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">NewName
<span style="color: darkgrey;">=</span> <span style="color: darkred;">"cn=testuser"</span>;</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Set the new container</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-family: "Lucida Console"; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin;">$r</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-family: "Lucida Console"; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin;">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-family: "Lucida Console"; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin;">NewParentDistinguishedName <span style="color: darkgrey;">=</span> <span style="color: darkred;">"ou=testou2,dc=mikesblog,dc=lan"</span>;</span>
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> </span>
<br />
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Actually process the request through the server</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$re</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: orangered;">$c</span><span style="color: darkgrey;">.</span>SendRequest(<span style="color: orangered;">$r</span>);</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkblue; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">if</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> (<span style="color: orangered;">$re</span><span style="color: darkgrey;">.</span>ResultCode <span style="color: darkgrey;">-ne</span>
<span style="color: darkgrey;">[</span><span style="color: teal;">System.directoryServices.Protocols.ResultCode</span><span style="color: darkgrey;">]::</span>Success) </span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">{</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">write-host</span> <span style="color: darkred;">"Failed!"</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">write-host</span>
(<span style="color: darkred;">"ResultCode: "</span> <span style="color: darkgrey;">+</span> <span style="color: orangered;">$re</span><span style="color: darkgrey;">.</span>ResultCode)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">write-host</span>
(<span style="color: darkred;">"Message: "</span> <span style="color: darkgrey;">+</span> <span style="color: orangered;">$re</span><span style="color: darkgrey;">.</span>ErrorMessage)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">}
</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span>
<br />
<hr size="2" width="100%" />
<br />
<br />
<br />
<br />
<br />
<br />
Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com1tag:blogger.com,1999:blog-7503353345181123469.post-22654978555445240592013-05-06T14:22:00.001-07:002013-05-06T21:35:42.276-07:00Adding Objects to Non-Microsoft LDAP Directories in .Net and PowerShellIn this series on working with non-Microsoft directories in PowerShell and .Net<br />
<br />
<ul>
<li><a href="http://mikemstech.blogspot.com/2013/03/searching-non-microsoft-ldap.html" target="_blank">Searching</a></li>
<li><a href="http://mikemstech.blogspot.com/2013/05/adding-objects-to-non-microsoft-ldap.html" target="_blank">Adding Entries</a></li>
<li><a href="http://mikemstech.blogspot.com/2013/05/moving-and-renaming-objects-in-non.html" target="_blank">Moving and Renaming Entries</a></li>
<li><a href="http://mikemstech.blogspot.com/2013/05/updating-attributes-in-non-microsoft.html" target="_blank">Updating Attributes</a></li>
<li><a href="http://mikemstech.blogspot.com/2013/05/deleting-entries-in-non-microsoft-ldap.html" target="_blank">Deleting Entries</a></li>
</ul>
<br />
A previous post of mine that covered LDAP searches in non-Microsoft
Active Directory LDAP directories (ex. OpenLDAP, Oracle Internet
Directory, Novell eDirectory, etc.) gained a fair amount of popularity
and I received requests to follow up on it to provide instructions on
performing other LDAP functions using the .Net Framework and PowerShell.
<br />
<br />
Continuing from my last post, I went ahead and set up an OpenLDAP server
for demonstration purposes utilizing the core, cosine, and
inetorgperson schemas. I have prepopulated it with the following
objects:<br />
<br />
<tt>dn: dc=mikesblog,dc=lan<br />
objectclass: dcObject<br />
objectclass: organization<br />
o: Mikes Technology Blog<br />
dc: mikesblog<br />
<br />
dn: cn=Manager,dc=mikesblog,dc=lan<br />
objectclass: organizationalRole<br />
cn: Manager<br />
<br />
dn: ou=testou1,dc=mikesblog,dc=lan<br />
objectclass: organizationalUnit<br />
objectclass: top<br />
ou: testou1<br />
description: My first test OU<br />
<br />
dn: cn=mike,ou=testou1,dc=mikesblog,dc=lan<br />
objectClass: person<br />
objectclass: inetorgperson<br />
givenName: Mike<br />
sn: Burr<br />
uid: mike<br />
<br />
dn: ou=testou2,dc=mikesblog,dc=lan<br />
objectclass: organizationalUnit<br />
objectclass: top<br />
ou: testou2<br />
description: My second test OU<br />
<br />
</tt>In this example, we will add another inetorgperson object to the
testou1 OU. To accomplish this, we will use the .Net framework classes
in the <b>System.DirectoryServices.Protocols</b> namespace. The <b>LdapConnection</b> class gives our application connectivity to the LDAP server where we can provide an <b>AddRequest</b> object and receive an <b>AddReply</b>.<br />
<br />
The sample code below is designed to demonstrate how to create an LDAP
entry, in practice this might be designed to use the command, content
enricher, and decorator patterns instead of the hardcoded transaction
script below.<br />
<br />
Let's get to it... The sample C#.Net code:<br />
<br />
<br />
<hr size="2" width="100%" />
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
Connects to myopenldap.mikesblog.lan </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
without SSL on the standard port</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">LdapConnection</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> c = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">LdapConnection</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"myopenldap.mikesblog.lan:389"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//Set
session options</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">c.SessionOptions.SecureSocketLayer
= </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">false</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">c.SessionOptions.ProtocolVersion
= 3;</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
Pick Authentication type:</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
Anonymous, Basic, Digest, DPA (Distributed Password Authentication),</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
External, Kerberos, Msn, Negotiate, Ntlm, Sicily </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">c.AuthType
= </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">AuthType</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Basic;</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
Gets username and password. There are better </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
ways to do this more securely...</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
but that's not the topic of this post.</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Write(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Enter
Username: "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> username = </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.ReadLine();</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine();</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Write(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Enter
Password: "</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">string</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> password = </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.ReadLine();</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
Bind with the network credentials. Depending on the type of server, </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
the username will take different forms. Authentication type is controlled</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
above with the AuthType</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">c.Bind(</span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> System.Net.</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">NetworkCredential</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">(username,
password));</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//
We are going to create this object (LDIF Below)</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">/*
</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">dn:
cn=testuser,ou=testou1,dc=mikesblog,dc=lan</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">objectclass:
person</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">objectclass:
inetorgperson</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">givenName:
Test </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">sn:
User</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">uid:
testuser</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">*/</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">AddRequest</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> r = </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">AddRequest</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">();</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">r.DistinguishedName
= </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"cn=testuser,ou=testou1,dc=mikesblog,dc=lan"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">;</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//Use
the Attributes dictionary and the </span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//DirectoryAttribute
class to set the desired attributes</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">r.Attributes.Add(</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">DirectoryAttribute</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">(</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"objectclass"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, </span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">object</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">[] {</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"person"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">,</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"inetorgperson"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">}</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span>)</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">r.Attributes.Add(</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">DirectoryAttribute</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"givenName"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Test"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">)</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">r.Attributes.Add(</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">DirectoryAttribute</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"sn"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"user"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">)</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">r.Attributes.Add(</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">new</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">DirectoryAttribute</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"uid"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, </span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"testuser"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">)</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: green; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">//Actually
process the request through the server</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"></span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">AddResponse</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> re = (</span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">AddResponse</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">)c.SendRequest(r);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: blue; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">if</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> (re.ResultCode != </span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">ResultCode</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.Success)</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">{</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Failed!"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"ResultCode:
{0}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, re.ResultCode);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"><span style="mso-spacerun: yes;"> </span></span><span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">.WriteLine(</span><span style="background: white; color: #a31515; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">"Message:
{0}"</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">, re.ErrorMessage);</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;">}</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<span style="background: white; color: #2b91af; font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-highlight: white;">Console</span><span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin; mso-highlight: white;">.Read();</span>
<br />
<hr size="2" width="100%" />
<br />
Not to disappoint, below is the PowerShell port of the above code.<br />
<br />
<hr size="2" width="100%" />
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Mike Burr</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Script Connects to and Creates Objects in OpenLDAP directory</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Load the assemblies</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">[</span><span style="color: teal; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">System.Reflection.Assembly</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">]::</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">LoadWithPartialName(<span style="color: darkred;">"System.DirectoryServices.Protocols"</span>)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">[</span><span style="color: teal; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">System.Reflection.Assembly</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">]::</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">LoadWithPartialName(<span style="color: darkred;">"System.Net"</span>)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Connects to myopenldap.mikesblog.lan on the standard port</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$c</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: blue;">New-Object</span> <span style="color: blueviolet;">System.DirectoryServices.Protocols.LdapConnection</span>
<span style="color: darkred;">`<br />
"myopenldap.mikesblog.lan:389"</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Set session options</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$c</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">SessionOptions<span style="color: darkgrey;">.</span>SecureSocketLayer <span style="color: darkgrey;">=</span>
<span style="color: orangered;">$false</span>;</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$c</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">SessionOptions<span style="color: darkgrey;">.</span>ProtocolVersion <span style="color: darkgrey;">=</span>
<span style="color: purple;">3</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># Pick Authentication type:</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># Anonymous, Basic, Digest, DPA (Distributed Password
Authentication),</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># External, Kerberos, Msn, Negotiate, Ntlm, Sicily </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$c</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">AuthType
<span style="color: darkgrey;">=</span> <span style="color: darkgrey;">[</span><span style="color: teal;">System.DirectoryServices.Protocols.AuthType</span><span style="color: darkgrey;">]::</span>Basic</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># Gets username and password. </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$user</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: blue;">Read-Host</span> <span style="color: navy;">-Prompt</span> <span style="color: darkred;">"Username"</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$pass</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: blue;">Read-Host</span> <span style="color: navy;">-AsSecureString</span>
<span style="color: darkred;">"Password"</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$credentials</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: blue;">new-object</span> <span style="color: darkred;">"System.Net.NetworkCredential"</span> <span style="color: navy;">-ArgumentList</span> <span style="color: orangered;">$user</span><span style="color: darkgrey;">,</span><span style="color: orangered;">$pass</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># Bind with the network credentials. Depending on the type of
server, </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># the username will take different forms. Authentication type
is controlled</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># above with the AuthType</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$c</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">Bind(<span style="color: orangered;">$credentials</span>);</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># We are going to create this object (LDIF Below)</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># dn: cn=testuser,ou=testou1,dc=mikesblog,dc=lan</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># objectclass: person</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># objectclass: inetorgperson</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># givenName: Test </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># sn: User</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># uid: testuser</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$r</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> (<span style="color: blue;">new-object</span> <span style="color: darkred;">"System.DirectoryServices.Protocols.AddRequest"</span>)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$r</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">DistinguishedName
<span style="color: darkgrey;">=</span> <span style="color: darkred;">"cn=testuser,ou=testou1,dc=mikesblog,dc=lan"</span>;</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Use the Attributes dictionary and the </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#DirectoryAttribute class to set the desired attributes</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$r</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">Attributes<span style="color: darkgrey;">.</span>Add( `</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span>(<span style="color: blue;">new-object</span>
<span style="color: darkred;">"System.DirectoryServices.Protocols.DirectoryAttribute"</span>
`</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span><span style="color: navy;">-ArgumentList</span>
<span style="color: darkred;">"objectclass"</span><span style="color: darkgrey;">,</span>@(<span style="color: darkred;">"person"</span><span style="color: darkgrey;">,</span><span style="color: darkred;">"inetorgperson"</span>)
`</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span>) `</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$r</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">Attributes<span style="color: darkgrey;">.</span>Add( `</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span>(<span style="color: blue;">new-object</span>
<span style="color: darkred;">"System.DirectoryServices.Protocols.DirectoryAttribute"</span>
`</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span><span style="color: navy;">-ArgumentList</span>
<span style="color: darkred;">"givenName"</span><span style="color: darkgrey;">,</span><span style="color: darkred;">"Test"</span>) `</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$r</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">Attributes<span style="color: darkgrey;">.</span>Add( `</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span>(<span style="color: blue;">new-object</span>
<span style="color: darkred;">"System.DirectoryServices.Protocols.DirectoryAttribute"</span>
`</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span><span style="color: navy;">-ArgumentList</span>
<span style="color: darkred;">"sn"</span><span style="color: darkgrey;">,</span><span style="color: darkred;">"User"</span>) `</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$r</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">Attributes<span style="color: darkgrey;">.</span>Add( `</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span>(<span style="color: blue;">new-object</span>
<span style="color: darkred;">"System.DirectoryServices.Protocols.DirectoryAttribute"</span>
`</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span><span style="color: navy;">-ArgumentList</span>
<span style="color: darkred;">"uid"</span><span style="color: darkgrey;">,</span><span style="color: darkred;">"testuser"</span>) `</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">#Actually process the request through the server</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$re</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: orangered;">$c</span><span style="color: darkgrey;">.</span>SendRequest(<span style="color: orangered;">$r</span>);</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkblue; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">if</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> (<span style="color: orangered;">$re</span><span style="color: darkgrey;">.</span>ResultCode <span style="color: darkgrey;">-ne</span>
<span style="color: darkgrey;">[</span><span style="color: teal;">System.directoryServices.Protocols.ResultCode</span><span style="color: darkgrey;">]::</span>Success) </span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">{</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">write-host</span> <span style="color: darkred;">"Failed!"</span></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">write-host</span>
(<span style="color: darkred;">"ResultCode: "</span> <span style="color: darkgrey;">+</span> <span style="color: orangered;">$re</span><span style="color: darkgrey;">.</span>ResultCode)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span><span style="color: blue;">write-host</span>
(<span style="color: darkred;">"Message: "</span> <span style="color: darkgrey;">+</span> <span style="color: orangered;">$re</span><span style="color: darkgrey;">.</span>ErrorMessage)</span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">}
</span></div>
<div class="MsoNormal" style="line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<span style="background: white; color: black; font-family: Consolas; font-size: 9.5pt; mso-highlight: white;"> </span>
<br />
<hr size="2" width="100%" />
<br />Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com1tag:blogger.com,1999:blog-7503353345181123469.post-22117015848882405852013-04-10T21:47:00.002-07:002013-04-10T21:47:51.024-07:00Query a Microsoft SQL Server Database with PowershellThe demonstration script below shows how to execute a database query with the "connected" ADO.Net classes and Microsoft PowerShell. This query helps prevent a SQL injection attack by using parameterized queries. This query assumes that the necessary .Net Framework libraries are installed on the system and the correct access to the DB is granted to the account running the script. This script will run against any version of Microsoft SQL Server supported by the .Net Framework. Note that if you are trying to use .Net 4.0, you will need to install PowerShell 3.0 or use the most recent Windows OS (at the time of this writing this is Windows 8 or Windows Server 2012).<br />
<br />
As an alternative to ExecuteReader below, it is also possible to run insert/update statements using the ExecuteNonQuery method because they do not return rowsets that need to be fetched and processed.<br />
<br />
<hr />
<br />
<br />
<br />
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># Mike Burr</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p> </o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># March 2013</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p></o:p></span></span></div>
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p></o:p></span></div>
</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p> <div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># Demonstration Script to perform basic Microsoft SQL Server query using PowerShell</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p></o:p></span></div>
</o:p></span><br />
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p> </o:p></span> <br />
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">[</span><span style="color: teal; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">System.Reflection.Assembly</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">]::</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">LoadWithPartialName(<span style="color: darkred;">"System.Data.SqlClient"</span>)<o:p></o:p></span></div>
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p> </o:p></span> <br />
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p> </o:p></span></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># Define the connection string for the database connection. Typically the </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p></o:p></span></span></span></div>
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p></o:p></span></div>
</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p> </o:p></span></span><br />
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p></o:p></span></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># account running the script or the application pool identity </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p></o:p></span></div>
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p> </o:p></span> <br />
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p></o:p></span></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># has appropriate access to the database allowing integrated security </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p></o:p></span></div>
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p> </o:p></span> <br />
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p></o:p></span></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># to be used. In limited cases, it may be necessary to define a username and<br /> </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p></o:p></span></div>
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p> </o:p></span> <br />
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p></o:p></span></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkgreen; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"># password in the connection string </span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p></o:p></span></div>
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p> </o:p></span> <br />
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><br /> </span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$ConnectionString</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: darkred;">"Data Source=localhost;Database=MyTestDB;Integrated Security=True;"</span><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">$conn</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <span style="color: darkgrey;">=</span> <span style="color: blue;">new-object</span> <span style="color: darkred;">"System.Data.SqlClient.SqlConnection"</span> <span style="color: orangered;">$ConnectionString</span><o:p></o:p></span></div>
<br />
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p> </o:p></span> <br />
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="color: darkblue; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">Try</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> {<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p> </o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> $conn</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">Open()<o:p></o:p></span></span></div>
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"> <div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p></o:p></span><br /> </div>
</span><br />
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span><span style="color: orangered;">$cmd</span> <span style="color: darkgrey;">=</span> <span style="color: orangered;">$conn</span><span style="color: darkgrey;">.</span>CreateCommand()<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span><span style="color: orangered;">$cmd</span><span style="color: darkgrey;">.</span>CommandText <span style="color: darkgrey;">=</span> <span style="color: darkred;">"SELECT DISTINCT a FROM Test where a = @a"</span> <o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><o:p> <span style="color: orangered; font-family: "Lucida Console"; font-size: 9.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-family: "Lucida Console"; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin;"> $cmd</span><span style="color: darkgrey; font-family: "Lucida Console"; font-size: 9.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-family: "Lucida Console"; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin;">.</span><span style="font-family: "Lucida Console"; font-size: 9.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-family: "Lucida Console"; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin;">Parameters<span style="color: darkgrey;">.</span>Add((<span style="color: blue;">New-Object</span> <span style="color: darkred;">"System.Data.SqlClient.SqlParameter"</span> <span style="color: navy;">-ArgumentList</span> <span style="color: darkred;">"a"</span><span style="color: darkgrey;">,</span><span style="color: orangered;">"some_value"</span>))<br /> </span> <link href="file:///C:%5CUsers%5CADMINI%7E1%5CAppData%5CLocal%5CTemp%5C2%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" rel="File-List"></link> <!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:AllowPNG/> </o:OfficeDocumentSettings> </xml><![endif]--> <link href="file:///C:%5CUsers%5CADMINI%7E1%5CAppData%5CLocal%5CTemp%5C2%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" rel="themeData"></link> <link href="file:///C:%5CUsers%5CADMINI%7E1%5CAppData%5CLocal%5CTemp%5C2%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" rel="colorSchemeMapping"></link> <!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <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>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>AR-SA</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:EnableOpenTypeKerning/> <w:DontFlipMirrorIndents/> <w:OverrideTableStyleHps/> </w:Compatibility> <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:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> </w:LatentStyles> </xml><![endif]--> <style> <!-- /* Font Definitions */ @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-536870145 1073786111 1 0 415 0;} @font-face {font-family:"Lucida Console"; panose-1:2 11 6 9 4 5 4 2 2 4; mso-font-charset:0; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:-2147482993 6144 0 0 31 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin-top:0in; margin-right:0in; margin-bottom:10.0pt; margin-left:0in; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:Calibri; mso-fareast-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:Arial; mso-bidi-theme-font:minor-bidi;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:Calibri; mso-fareast-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:Arial; mso-bidi-theme-font:minor-bidi;} .MsoPapDefault {mso-style-type:export-only; margin-bottom:10.0pt; line-height:115%;} @page WordSection1 {size:8.5in 11.0in; margin:1.0in 1.0in 1.0in 1.0in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.WordSection1 {page:WordSection1;} </style> </o:p></span></div>
--><!--[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-top:0in; mso-para-margin-right:0in; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0in; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;} </style> <![endif]--> <br />
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span><span style="color: orangered;">$reader</span> <span style="color: darkgrey;">=</span> <span style="color: orangered;">$cmd</span><span style="color: darkgrey;">.</span>ExecuteReader()<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span><span style="color: darkblue;">while</span> (<span style="color: orangered;">$reader</span><span style="color: darkgrey;">.</span>Read()) {<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span><span style="color: orangered;">$value</span> <span style="color: darkgrey;">=</span> <span style="color: orangered;">$reader</span><span style="color: darkgrey;">[</span><span style="color: darkred;">"a"</span><span style="color: darkgrey;">]</span><o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span>}<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<br /></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";">} <span style="color: darkblue;">Finally</span> {<o:p></o:p></span></div>
<div class="MsoNormal" style="background: white; line-height: normal; margin-bottom: .0001pt; margin-bottom: 0in; mso-layout-grid-align: none; text-autospace: none;">
<span style="font-family: "Lucida Console"; font-size: 9.0pt; mso-bidi-font-family: "Lucida Console";"><span style="mso-spacerun: yes;"> </span><span style="color: orangered;">$conn</span><span style="color: darkgrey;">.</span>Close();<o:p></o:p></span></div>
<span style="font-family: "Lucida Console"; font-size: 9.0pt; line-height: 115%; mso-ansi-language: EN-US; mso-bidi-font-family: "Lucida Console"; mso-bidi-language: AR-SA; mso-fareast-font-family: Calibri; mso-fareast-language: EN-US; mso-fareast-theme-font: minor-latin;">}</span> <link href="file:///C:%5CUsers%5CADMINI%7E1%5CAppData%5CLocal%5CTemp%5C2%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" rel="File-List"></link> <!--[if gte mso 9]><xml> <o:OfficeDocumentSettings> <o:AllowPNG/> </o:OfficeDocumentSettings> </xml><![endif]--> <link href="file:///C:%5CUsers%5CADMINI%7E1%5CAppData%5CLocal%5CTemp%5C2%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" rel="themeData"></link> <link href="file:///C:%5CUsers%5CADMINI%7E1%5CAppData%5CLocal%5CTemp%5C2%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" rel="colorSchemeMapping"></link> <!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <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>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>AR-SA</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:EnableOpenTypeKerning/> <w:DontFlipMirrorIndents/> <w:OverrideTableStyleHps/> </w:Compatibility> <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:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> </w:LatentStyles> </xml><![endif]--> <style> <!-- /* Font Definitions */ @font-face {font-family:Calibri; panose-1:2 15 5 2 2 2 4 3 2 4; mso-font-charset:0; mso-generic-font-family:swiss; mso-font-pitch:variable; mso-font-signature:-536870145 1073786111 1 0 415 0;} @font-face {font-family:"Lucida Console"; panose-1:2 11 6 9 4 5 4 2 2 4; mso-font-charset:0; mso-generic-font-family:modern; mso-font-pitch:fixed; mso-font-signature:-2147482993 6144 0 0 31 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin-top:0in; margin-right:0in; margin-bottom:10.0pt; margin-left:0in; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:Calibri; mso-fareast-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:Arial; mso-bidi-theme-font:minor-bidi;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:Calibri; mso-fareast-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:Arial; mso-bidi-theme-font:minor-bidi;} .MsoPapDefault {mso-style-type:export-only; margin-bottom:10.0pt; line-height:115%;} @page WordSection1 {size:8.5in 11.0in; margin:1.0in 1.0in 1.0in 1.0in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.WordSection1 {page:WordSection1;} </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-top:0in; mso-para-margin-right:0in; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0in; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;} </style> <![endif]--><br />
<br />
<hr />
<br />
See Also:<br />
<a href="http://mikemstech.blogspot.com/2013/04/query-mysql-database-with-powershell.html" target="_blank">How to Query a MySql Database using Windows PowerShell</a>Mhttp://www.blogger.com/profile/08374372339551009035noreply@blogger.com1