text: Network Working Group P. Faltstrom Request for Comments: 3490 Cisco Category: Standards Track P. Hoffman IMC & VPNC A. Costello UC Berkeley March 2003 Internationalizing Domain Names in Applications (IDNA) Status of this Memo This document specifies an Internet standards track protocol for the Internet community, and requests discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this memo is unlimited. Copyright Notice Copyright (C) The Internet Society (2003). All Rights Reserved. Abstract Until now, there has been no standard method for domain names to use characters outside the ASCII repertoire. This document defines internationalized domain names (IDNs) and a mechanism called Internationalizing Domain Names in Applications (IDNA) for handling them in a standard fashion. IDNs use characters drawn from a large repertoire (Unicode), but IDNA allows the non-ASCII characters to be represented using only the ASCII characters already allowed in so- called host names today. This backward-compatible representation is required in existing protocols like DNS, so that IDNs can be introduced with no changes to the existing infrastructure. IDNA is only meant for processing domain names, not free text. Table of Contents 1. Introduction.................................................. 2 1.1 Problem Statement......................................... 3 1.2 Limitations of IDNA....................................... 3 1.3 Brief overview for application developers................. 4 2. Terminology................................................... 5 3. Requirements and applicability................................ 7 3.1 Requirements.............................................. 7 3.2 Applicability............................................. 8 3.2.1. DNS resource records................................ 8 3.2.2. Non-domain-name data types stored in domain names... 9 4. Conversion operations......................................... 9 4.1 ToASCII................................................... 10 4.2 ToUnicode................................................. 11 5. ACE prefix.................................................... 12 6. Implications for typical applications using DNS............... 13 6.1 Entry and display in applications......................... 14 6.2 Applications and resolver libraries....................... 15 6.3 DNS servers............................................... 15 6.4 Avoiding exposing users to the raw ACE encoding........... 16 6.5 DNSSEC authentication of IDN domain names................ 16 7. Name server considerations.................................... 17 8. Root server considerations.................................... 17 9. References.................................................... 18 9.1 Normative References...................................... 18 9.2 Informative References.................................... 18 10. Security Considerations...................................... 19 11. IANA Considerations.......................................... 20 12. Authors' Addresses........................................... 21 13. Full Copyright Statement..................................... 22 1. Introduction IDNA works by allowing applications to use certain ASCII name labels (beginning with a special prefix) to represent non-ASCII name labels. Lower-layer protocols need not be aware of this; therefore IDNA does not depend on changes to any infrastructure. In particular, IDNA does not depend on any changes to DNS servers, resolvers, or protocol elements, because the ASCII name service provided by the existing DNS is entirely sufficient for IDNA. This document does not require any applications to conform to IDNA, but applications can elect to use IDNA in order to support IDN while maintaining interoperability with existing infrastructure. If an application wants to use non-ASCII characters in domain names, IDNA is the only currently-defined option. Adding IDNA support to an existing application entails changes to the application only, and leaves room for flexibility in the user interface. A great deal of the discussion of IDN solutions has focused on transition issues and how IDN will work in a world where not all of the components have been updated. Proposals that were not chosen by the IDN Working Group would depend on user applications, resolvers, and DNS servers being updated in order for a user to use an internationalized domain name. Rather than rely on widespread updating of all components, IDNA depends on updates to user applications only; no changes are needed to the DNS protocol or any DNS servers or the resolvers on user's computers. 1.1 Problem Statement The IDNA specification solves the problem of extending the repertoire of characters that can be used in domain names to include the Unicode repertoire (with some restrictions). IDNA does not extend the service offered by DNS to the applications. Instead, the applications (and, by implication, the users) continue to see an exact-match lookup service. Either there is a single exactly-matching name or there is no match. This model has served the existing applications well, but it requires, with or without internationalized domain names, that users know the exact spelling of the domain names that the users type into applications such as web browsers and mail user agents. The introduction of the larger repertoire of characters potentially makes the set of misspellings larger, especially given that in some cases the same appearance, for example on a business card, might visually match several Unicode code points or several sequences of code points. IDNA allows the graceful introduction of IDNs not only by avoiding upgrades to existing infrastructure (such as DNS servers and mail transport agents), but also by allowing some rudimentary use of IDNs in applications by using the ASCII representation of the non-ASCII name labels. While such names are very user-unfriendly to read and type, and hence are not suitable for user input, they allow (for instance) replying to email and clicking on URLs even though the domain name displayed is incomprehensible to the user. In order to allow user-friendly input and output of the IDNs, the applications need to be modified to conform to this specification. IDNA uses the Unicode character repertoire, which avoids the significant delays that would be inherent in waiting for a different and specific character set be defined for IDN purposes by some other standards developing organization. 1.2 Limitations of IDNA The IDNA protocol does not solve all linguistic issues with users inputting names in different scripts. Many important language-based and script-based mappings are not covered in IDNA and need to be handled outside the protocol. For example, names that are entered in a mix of traditional and simplified Chinese characters will not be mapped to a single canonical name. Another example is Scandinavian names that are entered with U+00F6 (LATIN SMALL LETTER O WITH DIAERESIS) will not be mapped to U+00F8 (LATIN SMALL LETTER O WITH STROKE). An example of an important issue that is not considered in detail in IDNA is how to provide a high probability that a user who is entering a domain name based on visual information (such as from a business card or billboard) or aural information (such as from a telephone or radio) would correctly enter the IDN. Similar issues exist for ASCII domain names, for example the possible visual confusion between the letter 'O' and the digit zero, but the introduction of the larger repertoire of characters creates more opportunities of similar looking and similar sounding names. Note that this is a complex issue relating to languages, input methods on computers, and so on. Furthermore, the kind of matching and searching necessary for a high probability of success would not fit the role of the DNS and its exact matching function. 1.3 Brief overview for application developers Applications can use IDNA to support internationalized domain names anywhere that ASCII domain names are already supported, including DNS master files and resolver interfaces. (Applications can also define protocols and interfaces that support IDNs directly using non-ASCII representations. IDNA does not prescribe any particular representation for new protocols, but it still defines which names are valid and how they are compared.) The IDNA protocol is contained completely within applications. It is not a client-server or peer-to-peer protocol: everything is done inside the application itself. When used with a DNS resolver library, IDNA is inserted as a "shim" between the application and the resolver library. When used for writing names into a DNS zone, IDNA is used just before the name is committed to the zone. There are two operations described in section 4 of this document: - The ToASCII operation is used before sending an IDN to something that expects ASCII names (such as a resolver) or writing an IDN into a place that expects ASCII names (such as a DNS master file). - The ToUnicode operation is used when displaying names to users, for example names obtained from a DNS zone. It is important to note that the ToASCII operation can fail. If it fails when processing a domain name, that domain name cannot be used as an internationalized domain name and the application has to have some method of dealing with this failure. IDNA requires that implementations process input strings with Nameprep [NAMEPREP], which is a profile of Stringprep [STRINGPREP], and then with Punycode [PUNYCODE]. Implementations of IDNA MUST fully implement Nameprep and Punycode; neither Nameprep nor Punycode are optional. 2. Terminology The key words "MUST", "SHALL", "REQUIRED", "SHOULD", "RECOMMENDED", and "MAY" in this document are to be interpreted as described in BCP 14, RFC 2119 [RFC2119]. A code point is an integer value associated with a character in a coded character set. Unicode [UNICODE] is a coded character set containing tens of thousands of characters. A single Unicode code point is denoted by "U+" followed by four to six hexadecimal digits, while a range of Unicode code points is denoted by two hexadecimal numbers separated by "..", with no prefixes. ASCII means US-ASCII [USASCII], a coded character set containing 128 characters associated with code points in the range 0..7F. Unicode is an extension of ASCII: it includes all the ASCII characters and associates them with the same code points. The term "LDH code points" is defined in this document to mean the code points associated with ASCII letters, digits, and the hyphen- minus; that is, U+002D, 30..39, 41..5A, and 61..7A. "LDH" is an abbreviation for "letters, digits, hyphen". [STD13] talks about "domain names" and "host names", but many people use the terms interchangeably. Further, because [STD13] was not terribly clear, many people who are sure they know the exact definitions of each of these terms disagree on the definitions. In this document the term "domain name" is used in general. This document explicitly cites [STD3] whenever referring to the host name syntax restrictions defined therein. A label is an individual part of a domain name. Labels are usually shown separated by dots; for example, the domain name "www.example.com" is composed of three labels: "www", "example", and "com". (The zero-length root label described in [STD13], which can be explicit as in "www.example.com." or implicit as in "www.example.com", is not considered a label in this specification.) IDNA extends the set of usable characters in labels that are text. For the rest of this document, the term "label" is shorthand for "text label", and "every label" means "every text label". An "internationalized label" is a label to which the ToASCII operation (see section 4) can be applied without failing (with the UseSTD3ASCIIRules flag unset). This implies that every ASCII label that satisfies the [STD13] length restriction is an internationalized label. Therefore the term "internationalized label" is a generalization, embracing both old ASCII labels and new non-ASCII labels. Although most Unicode characters can appear in internationalized labels, ToASCII will fail for some input strings, and such strings are not valid internationalized labels. An "internationalized domain name" (IDN) is a domain name in which every label is an internationalized label. This implies that every ASCII domain name is an IDN (which implies that it is possible for a name to be an IDN without it containing any non-ASCII characters). This document does not attempt to define an "internationalized host name". Just as has been the case with ASCII names, some DNS zone administrators may impose restrictions, beyond those imposed by DNS or IDNA, on the characters or strings that may be registered as labels in their zones. Such restrictions have no impact on the syntax or semantics of DNS protocol messages; a query for a name that matches no records will yield the same response regardless of the reason why it is not in the zone. Clients issuing queries or interpreting responses cannot be assumed to have any knowledge of zone-specific restrictions or conventions. In IDNA, equivalence of labels is defined in terms of the ToASCII operation, which constructs an ASCII form for a given label, whether or not the label was already an ASCII label. Labels are defined to be equivalent if and only if their ASCII forms produced by ToASCII match using a case-insensitive ASCII comparison. ASCII labels already have a notion of equivalence: upper case and lower case are considered equivalent. The IDNA notion of equivalence is an extension of that older notion. Equivalent labels in IDNA are treated as alternate forms of the same label, just as "foo" and "Foo" are treated as alternate forms of the same label. To allow internationalized labels to be handled by existing applications, IDNA uses an "ACE label" (ACE stands for ASCII Compatible Encoding). An ACE label is an internationalized label that can be rendered in ASCII and is equivalent to an internationalized label that cannot be rendered in ASCII. Given any internationalized label that cannot be rendered in ASCII, the ToASCII operation will convert it to an equivalent ACE label (whereas an ASCII label will be left unaltered by ToASCII). ACE labels are unsuitable for display to users. The ToUnicode operation will convert any label to an equivalent non-ACE label. In fact, an ACE label is formally defined to be any label that the ToUnicode operation would alter (whereas non-ACE labels are left unaltered by ToUnicode). Every ACE label begins with the ACE prefix specified in section 5. The ToASCII and ToUnicode operations are specified in section 4. The "ACE prefix" is defined in this document to be a string of ASCII characters that appears at the beginning of every ACE label. It is specified in section 5. A "domain name slot" is defined in this document to be a protocol element or a function argument or a return value (and so on) explicitly designated for carrying a domain name. Examples of domain name slots include: the QNAME field of a DNS query; the name argument of the gethostbyname() library function; the part of an email address following the at-sign (@) in the From: field of an email message header; and the host portion of the URI in the src attribute of an HTML <IMG> tag. General text that just happens to contain a domain name is not a domain name slot; for example, a domain name appearing in the plain text body of an email message is not occupying a domain name slot. An "IDN-aware domain name slot" is defined in this document to be a domain name slot explicitly designated for carrying an internationalized domain name as defined in this document. The designation may be static (for example, in the specification of the protocol or interface) or dynamic (for example, as a result of negotiation in an interactive session). An "IDN-unaware domain name slot" is defined in this document to be any domain name slot that is not an IDN-aware domain name slot. Obviously, this includes any domain name slot whose specification predates IDNA. 3. Requirements and applicability 3.1 Requirements IDNA conformance means adherence to the following four requirements: 1) Whenever dots are used as label separators, the following characters MUST be recognized as dots: U+002E (full stop), U+3002 (ideographic full stop), U+FF0E (fullwidth full stop), U+FF61 (halfwidth ideographic full stop). 2) Whenever a domain name is put into an IDN-unaware domain name slot (see section 2), it MUST contain only ASCII characters. Given an internationalized domain name (IDN), an equivalent domain name satisfying this requirement can be obtained by applying the ToASCII operation (see section 4) to each label and, if dots are used as label separators, changing all the label separators to U+002E. 3) ACE labels obtained from domain name slots SHOULD be hidden from users when it is known that the environment can handle the non-ACE form, except when the ACE form is explicitly requested. When it is not known whether or not the environment can handle the non-ACE form, the application MAY use the non-ACE form (which might fail, such as by not being displayed properly), or it MAY use the ACE form (which will look unintelligle to the user). Given an internationalized domain name, an equivalent domain name containing no ACE labels can be obtained by applying the ToUnicode operation (see section 4) to each label. When requirements 2 and 3 both apply, requirement 2 takes precedence. 4) Whenever two labels are compared, they MUST be considered to match if and only if they are equivalent, that is, their ASCII forms (obtained by applying ToASCII) match using a case-insensitive ASCII comparison. Whenever two names are compared, they MUST be considered to match if and only if their corresponding labels match, regardless of whether the names use the same forms of label separators. 3.2 Applicability IDNA is applicable to all domain names in all domain name slots except where it is explicitly excluded. This implies that IDNA is applicable to many protocols that predate IDNA. Note that IDNs occupying domain name slots in those protocols MUST be in ASCII form (see section 3.1, requirement 2). 3.2.1. DNS resource records IDNA does not apply to domain names in the NAME and RDATA fields of DNS resource records whose CLASS is not IN. This exclusion applies to every non-IN class, present and future, except where future standards override this exclusion by explicitly inviting the use of IDNA. There are currently no other exclusions on the applicability of IDNA to DNS resource records; it depends entirely on the CLASS, and not on the TYPE. This will remain true, even as new types are defined, unless there is a compelling reason for a new type to complicate matters by imposing type-specific rules. 3.2.2. Non-domain-name data types stored in domain names Although IDNA enables the representation of non-ASCII characters in domain names, that does not imply that IDNA enables the representation of non-ASCII characters in other data types that are stored in domain names. For example, an email address local part is sometimes stored in a domain label (email@example.com would be represented as hostmaster.example.com in the RDATA field of an SOA record). IDNA does not update the existing email standards, which allow only ASCII characters in local parts. Therefore, unless the email standards are revised to invite the use of IDNA for local parts, a domain label that holds the local part of an email address SHOULD NOT begin with the ACE prefix, and even if it does, it is to be interpreted literally as a local part that happens to begin with the ACE prefix. 4. Conversion operations An application converts a domain name put into an IDN-unaware slot or displayed to a user. This section specifies the steps to perform in the conversion, and the ToASCII and ToUnicode operations. The input to ToASCII or ToUnicode is a single label that is a sequence of Unicode code points (remember that all ASCII code points are also Unicode code points). If a domain name is represented using a character set other than Unicode or US-ASCII, it will first need to be transcoded to Unicode. Starting from a whole domain name, the steps that an application takes to do the conversions are: 1) Decide whether the domain name is a "stored string" or a "query string" as described in [STRINGPREP]. If this conversion follows the "queries" rule from [STRINGPREP], set the flag called "AllowUnassigned". 2) Split the domain name into individual labels as described in section 3.1. The labels do not include the separator. 3) For each label, decide whether or not to enforce the restrictions on ASCII characters in host names [STD3]. (Applications already faced this choice before the introduction of IDNA, and can continue to make the decision the same way they always have; IDNA makes no new recommendations regarding this choice.) If the restrictions are to be enforced, set the flag called "UseSTD3ASCIIRules" for that label. 4) Process each label with either the ToASCII or the ToUnicode operation as appropriate. Typically, you use the ToASCII operation if you are about to put the name into an IDN-unaware slot, and you use the ToUnicode operation if you are displaying the name to a user; section 3.1 gives greater detail on the applicable requirements. 5) If ToASCII was applied in step 4 and dots are used as label separators, change all the label separators to U+002E (full stop). The following two subsections define the ToASCII and ToUnicode operations that are used in step 4. This description of the protocol uses specific procedure names, names of flags, and so on, in order to facilitate the specification of the protocol. These names, as well as the actual steps of the procedures, are not required of an implementation. In fact, any implementation which has the same external behavior as specified in this document conforms to this specification. 4.1 ToASCII The ToASCII operation takes a sequence of Unicode code points that make up one label and transforms it into a sequence of code points in the ASCII range (0..7F). If ToASCII succeeds, the original sequence and the resulting sequence are equivalent labels. It is important to note that the ToASCII operation can fail. ToASCII fails if any step of it fails. If any step of the ToASCII operation fails on any label in a domain name, that domain name MUST NOT be used as an internationalized domain name. The method for dealing with this failure is application-specific. The inputs to ToASCII are a sequence of code points, the AllowUnassigned flag, and the UseSTD3ASCIIRules flag. The output of ToASCII is either a sequence of ASCII code points or a failure condition. ToASCII never alters a sequence of code points that are all in the ASCII range to begin with (although it could fail). Applying the ToASCII operation multiple times has exactly the same effect as applying it just once. ToASCII consists of the following steps: 1. If the sequence contains any code points outside the ASCII range (0..7F) then proceed to step 2, otherwise skip to step 3. 2. Perform the steps specified in [NAMEPREP] and fail if there is an error. The AllowUnassigned flag is used in [NAMEPREP]. 3. If the UseSTD3ASCIIRules flag is set, then perform these checks: (a) Verify the absence of non-LDH ASCII code points; that is, the absence of 0..2C, 2E..2F, 3A..40, 5B..60, and 7B..7F. (b) Verify the absence of leading and trailing hyphen-minus; that is, the absence of U+002D at the beginning and end of the sequence. 4. If the sequence contains any code points outside the ASCII range (0..7F) then proceed to step 5, otherwise skip to step 8. 5. Verify that the sequence does NOT begin with the ACE prefix. 6. Encode the sequence using the encoding algorithm in [PUNYCODE] and fail if there is an error. 7. Prepend the ACE prefix. 8. Verify that the number of code points is in the range 1 to 63 inclusive. 4.2 ToUnicodeThe ToUnicode operation takes a sequence of Unicode code points that make up one label and returns a sequence of Unicode code points. If the input sequence is a label in ACE form, then the result is an equivalent internationalized label that is not in ACE form, otherwise the original sequence is returned unaltered. ToUnicode never fails. If any step fails, then the original input sequence is returned immediately in that step. The ToUnicode output never contains more code points than its input. Note that the number of octets needed to represent a sequence of code points depends on the particular character encoding used. The inputs to ToUnicode are a sequence of code points, the AllowUnassigned flag, and the UseSTD3ASCIIRules flag. The output of ToUnicode is always a sequence of Unicode code points. 1. If all code points in the sequence are in the ASCII range (0..7F) then skip to step 3. 2. Perform the steps specified in [NAMEPREP] and fail if there is an error. (If step 3 of ToASCII is also performed here, it will not affect the overall behavior of ToUnicode, but it is not necessary.) The AllowUnassigned flag is used in [NAMEPREP]. 3. Verify that the sequence begins with the ACE prefix, and save a copy of the sequence. 4. Remove the ACE prefix. 5. Decode the sequence using the decoding algorithm in [PUNYCODE] and fail if there is an error. Save a copy of the result of this step. 6. Apply ToASCII. 7. Verify that the result of step 6 matches the saved copy from step 3, using a case-insensitive ASCII comparison. 8. Return the saved copy from step 5. 5. ACE prefix The ACE prefix, used in the conversion operations (section 4), is two alphanumeric ASCII characters followed by two hyphen-minuses. It cannot be any of the prefixes already used in earlier documents, which includes the following: "bl--", "bq--", "dq--", "lq--", "mq--", "ra--", "wq--" and "zq--". The ToASCII and ToUnicode operations MUST recognize the ACE prefix in a case-insensitive manner. The ACE prefix for IDNA is "xn--" or any capitalization thereof. This means that an ACE label might be "xn--de-jg4avhby1noc0d", where "de-jg4avhby1noc0d" is the part of the ACE label that is generated by the encoding steps in [PUNYCODE]. While all ACE labels begin with the ACE prefix, not all labels beginning with the ACE prefix are necessarily ACE labels. Non-ACE labels that begin with the ACE prefix will confuse users and SHOULD NOT be allowed in DNS zones. 6. Implications for typical applications using DNS In IDNA, applications perform the processing needed to input internationalized domain names from users, display internationalized domain names to users, and process the inputs and outputs from DNS and other protocols that carry domain names. The components and interfaces between them can be represented pictorially as: +------+ | User | +------+ ^ | Input and display: local interface methods | (pen, keyboard, glowing phosphorus, ...) +-------------------|-------------------------------+ | v | | +-----------------------------+ | | | Application | | | | (ToASCII and ToUnicode | | | | operations may be | | | | called here) | | | +-----------------------------+ | | ^ ^ | End system | | | | | Call to resolver: | | Application-specific | | ACE | | protocol: | | v | ACE unless the | | +----------+ | protocol is updated | | | Resolver | | to handle other | | +----------+ | encodings | | ^ | | +-----------------|----------|----------------------+ DNS protocol: | | ACE | | v v +-------------+ +---------------------+ | DNS servers | | Application servers | +-------------+ +---------------------+ The box labeled "Application" is where the application splits a domain name into labels, sets the appropriate flags, and performs the ToASCII and ToUnicode operations. This is described in section 4. 6.1 Entry and display in applications Applications can accept domain names using any character set or sets desired by the application developer, and can display domain names in any charset. That is, the IDNA protocol does not affect the interface between users and applications. An IDNA-aware application can accept and display internationalized domain names in two formats: the internationalized character set(s) supported by the application, and as an ACE label. ACE labels that are displayed or input MUST always include the ACE prefix. Applications MAY allow input and display of ACE labels, but are not encouraged to do so except as an interface for special purposes, possibly for debugging, or to cope with display limitations as described in section 6.4.. ACE encoding is opaque and ugly, and should thus only be exposed to users who absolutely need it. Because name labels encoded as ACE name labels can be rendered either as the encoded ASCII characters or the proper decoded characters, the application MAY have an option for the user to select the preferred method of display; if it does, rendering the ACE SHOULD NOT be the default. Domain names are often stored and transported in many places. For example, they are part of documents such as mail messages and web pages. They are transported in many parts of many protocols, such as both the control commands and the RFC 2822 body parts of SMTP, and the headers and the body content in HTTP. It is important to remember that domain names appear both in domain name slots and in the content that is passed over protocols. In protocols and document formats that define how to handle specification or negotiation of charsets, labels can be encoded in any charset allowed by the protocol or document format. If a protocol or document format only allows one charset, the labels MUST be given in that charset. In any place where a protocol or document format allows transmission of the characters in internationalized labels, internationalized labels SHOULD be transmitted using whatever character encoding and escape mechanism that the protocol or document format uses at that place. All protocols that use domain name slots already have the capacity for handling domain names in the ASCII charset. Thus, ACE labels (internationalized labels that have been processed with the ToASCII operation) can inherently be handled by those protocols. 6.2 Applications and resolver libraries Applications normally use functions in the operating system when they resolve DNS queries. Those functions in the operating system are often called "the resolver library", and the applications communicate with the resolver libraries through a programming interface (API). Because these resolver libraries today expect only domain names in ASCII, applications MUST prepare labels that are passed to the resolver library using the ToASCII operation. Labels received from the resolver library contain only ASCII characters; internationalized labels that cannot be represented directly in ASCII use the ACE form. ACE labels always include the ACE prefix. An operating system might have a set of libraries for performing the ToASCII operation. The input to such a library might be in one or more charsets that are used in applications (UTF-8 and UTF-16 are likely candidates for almost any operating system, and script- specific charsets are likely for localized operating systems). IDNA-aware applications MUST be able to work with both non- internationalized labels (those that conform to [STD13] and [STD3]) and internationalized labels. It is expected that new versions of the resolver libraries in the future will be able to accept domain names in other charsets than ASCII, and application developers might one day pass not only domain names in Unicode, but also in local script to a new API for the resolver libraries in the operating system. Thus the ToASCII and ToUnicode operations might be performed inside these new versions of the resolver libraries. Domain names passed to resolvers or put into the question section of DNS requests follow the rules for "queries" from [STRINGPREP]. 6.3 DNS servers Domain names stored in zones follow the rules for "stored strings" from [STRINGPREP]. For internationalized labels that cannot be represented directly in ASCII, DNS servers MUST use the ACE form produced by the ToASCII operation. All IDNs served by DNS servers MUST contain only ASCII characters. If a signaling system which makes negotiation possible between old and new DNS clients and servers is standardized in the future, the encoding of the query in the DNS protocol itself can be changed from ACE to something else, such as UTF-8. The question whether or not this should be used is, however, a separate problem and is not discussed in this memo. 6.4 Avoiding exposing users to the raw ACE encoding Any application that might show the user a domain name obtained from a domain name slot, such as from gethostbyaddr or part of a mail header, will need to be updated if it is to prevent users from seeing the ACE. If an application decodes an ACE name using ToUnicode but cannot show all of the characters in the decoded name, such as if the name contains characters that the output system cannot display, the application SHOULD show the name in ACE format (which always includes the ACE prefix) instead of displaying the name with the replacement character (U+FFFD). This is to make it easier for the user to transfer the name correctly to other programs. Programs that by default show the ACE form when they cannot show all the characters in a name label SHOULD also have a mechanism to show the name that is produced by the ToUnicode operation with as many characters as possible and replacement characters in the positions where characters cannot be displayed. The ToUnicode operation does not alter labels that are not valid ACE labels, even if they begin with the ACE prefix. After ToUnicode has been applied, if a label still begins with the ACE prefix, then it is not a valid ACE label, and is not equivalent to any of the intermediate Unicode strings constructed by ToUnicode. 6.5 DNSSEC authentication of IDN domain names DNS Security [RFC2535] is a method for supplying cryptographic verification information along with DNS messages. Public Key Cryptography is used in conjunction with digital signatures to provide a means for a requester of domain information to authenticate the source of the data. This ensures that it can be traced back to a trusted source, either directly, or via a chain of trust linking the source of the information to the top of the DNS hierarchy. IDNA specifies that all internationalized domain names served by DNS servers that cannot be represented directly in ASCII must use the ACE form produced by the ToASCII operation. This operation must be performed prior to a zone being signed by the private key for that zone. Because of this ordering, it is important to recognize that DNSSEC authenticates the ASCII domain name, not the Unicode form or the mapping between the Unicode form and the ASCII form. In the presence of DNSSEC, this is the name that MUST be signed in the zone and MUST be validated against. One consequence of this for sites deploying IDNA in the presence of DNSSEC is that any special purpose proxies or forwarders used to transform user input into IDNs must be earlier in the resolution flow than DNSSEC authenticating nameservers for DNSSEC to work. 7. Name server considerations Existing DNS servers do not know the IDNA rules for handling non- ASCII forms of IDNs, and therefore need to be shielded from them. All existing channels through which names can enter a DNS server database (for example, master files [STD13] and DNS update messages [RFC2136]) are IDN-unaware because they predate IDNA, and therefore requirement 2 of section 3.1 of this document provides the needed shielding, by ensuring that internationalized domain names entering DNS server databases through such channels have already been converted to their equivalent ASCII forms. It is imperative that there be only one ASCII encoding for a particular domain name. Because of the design of the ToASCII and ToUnicode operations, there are no ACE labels that decode to ASCII labels, and therefore name servers cannot contain multiple ASCII encodings of the same domain name. [RFC2181] explicitly allows domain labels to contain octets beyond the ASCII range (0..7F), and this document does not change that. Note, however, that there is no defined interpretation of octets 80..FF as characters. If labels containing these octets are returned to applications, unpredictable behavior could result. The ASCII form defined by ToASCII is the only standard representation for internationalized labels in the current DNS protocol. 8. Root server considerations IDNs are likely to be somewhat longer than current domain names, so the bandwidth needed by the root servers is likely to go up by a small amount. Also, queries and responses for IDNs will probably be somewhat longer than typical queries today, so more queries and responses may be forced to go to TCP instead of UDP. 9. References 9.1 Normative References [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. [STRINGPREP] Hoffman, P. and M. Blanchet, "Preparation of Internationalized Strings ("stringprep")", RFC 3454, December 2002. [NAMEPREP] Hoffman, P. and M. Blanchet, "Nameprep: A Stringprep Profile for Internationalized Domain Names (IDN)", RFC 3491, March 2003. [PUNYCODE] Costello, A., "Punycode: A Bootstring encoding of Unicode for use with Internationalized Domain Names in Applications (IDNA)", RFC 3492, March 2003. [STD3] Braden, R., "Requirements for Internet Hosts -- Communication Layers", STD 3, RFC 1122, and "Requirements for Internet Hosts -- Application and Support", STD 3, RFC 1123, October 1989. [STD13] Mockapetris, P., "Domain names - concepts and facilities", STD 13, RFC 1034 and "Domain names - implementation and specification", STD 13, RFC 1035, November 1987. 9.2 Informative References [RFC2535] Eastlake, D., "Domain Name System Security Extensions", RFC 2535, March 1999. [RFC2181] Elz, R. and R. Bush, "Clarifications to the DNS Specification", RFC 2181, July 1997. [UAX9] Unicode Standard Annex #9, The Bidirectional Algorithm, <http://www.unicode.org/unicode/reports/tr9/>. [UNICODE] The Unicode Consortium. The Unicode Standard, Version 3.2.0 is defined by The Unicode Standard, Version 3.0 (Reading, MA, Addison-Wesley, 2000. ISBN 0-201-61633-5), as amended by the Unicode Standard Annex #27: Unicode 3.1 (http://www.unicode.org/reports/tr27/) and by the Unicode Standard Annex #28: Unicode 3.2 (http://www.unicode.org/reports/tr28/). [USASCII] Cerf, V., "ASCII format for Network Interchange", RFC 20, October 1969. 10. Security Considerations Security on the Internet partly relies on the DNS. Thus, any change to the characteristics of the DNS can change the security of much of the Internet. This memo describes an algorithm which encodes characters that are not valid according to STD3 and STD13 into octet values that are valid. No security issues such as string length increases or new allowed values are introduced by the encoding process or the use of these encoded values, apart from those introduced by the ACE encoding itself. Domain names are used by users to identify and connect to Internet servers. The security of the Internet is compromised if a user entering a single internationalized name is connected to different servers based on different interpretations of the internationalized domain name. When systems use local character sets other than ASCII and Unicode, this specification leaves the the problem of transcoding between the local character set and Unicode up to the application. If different applications (or different versions of one application) implement different transcoding rules, they could interpret the same name differently and contact different servers. This problem is not solved by security protocols like TLS that do not take local character sets into account. Because this document normatively refers to [NAMEPREP], [PUNYCODE], and [STRINGPREP], it includes the security considerations from those documents as well. If or when this specification is updated to use a more recent Unicode normalization table, the new normalization table will need to be compared with the old to spot backwards incompatible changes. If there are such changes, they will need to be handled somehow, or there will be security as well as operational implications. Methods to handle the conflicts could include keeping the old normalization, or taking care of the conflicting characters by operational means, or some other method. Implementations MUST NOT use more recent normalization tables than the one referenced from this document, even though more recent tables may be provided by operating systems. If an application is unsure of which version of the normalization tables are in the operating system, the application needs to include the normalization tables itself. Using normalization tables other than the one referenced from this specification could have security and operational implications. To help prevent confusion between characters that are visually similar, it is suggested that implementations provide visual indications where a domain name contains multiple scripts. Such mechanisms can also be used to show when a name contains a mixture of simplified and traditional Chinese characters, or to distinguish zero and one from O and l. DNS zone adminstrators may impose restrictions (subject to the limitations in section 2) that try to minimize homographs. Domain names (or portions of them) are sometimes compared against a set of privileged or anti-privileged domains. In such situations it is especially important that the comparisons be done properly, as specified in section 3.1 requirement 4. For labels already in ASCII form, the proper comparison reduces to the same case-insensitive ASCII comparison that has always been used for ASCII labels. The introduction of IDNA means that any existing labels that start with the ACE prefix and would be altered by ToUnicode will automatically be ACE labels, and will be considered equivalent to non-ASCII labels, whether or not that was the intent of the zone adminstrator or registrant. 11. IANA Considerations IANA has assigned the ACE prefix in consultation with the IESG. 12. Authors' Addresses Patrik Faltstrom Cisco Systems Arstaangsvagen 31 J S-117 43 Stockholm Sweden EMail: firstname.lastname@example.com Paul Hoffman Internet Mail Consortium and VPN Consortium 127 Segre Place Santa Cruz, CA 95060 USA EMail: firstname.lastname@example.com Adam M. Costello University of California, Berkeley URL: http://www.nicemice.net/amc/ 13. Full Copyright Statement Copyright (C) The Internet Society (2003). All Rights Reserved. This document and translations of it may be copied and furnished to others, and derivative works that comment on or otherwise explain it or assist in its implementation may be prepared, copied, published and distributed, in whole or in part, without restriction of any kind, provided that the above copyright notice and this paragraph are included on all such copies and derivative works. However, this document itself may not be modified in any way, such as by removing the copyright notice or references to the Internet Society or other Internet organizations, except as needed for the purpose of developing Internet standards in which case the procedures for copyrights defined in the Internet Standards process must be followed, or as required to translate it into languages other than English. The limited permissions granted above are perpetual and will not be revoked by the Internet Society or its successors or assigns. This document and the information contained herein is provided on an "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Acknowledgement Funding for the RFC Editor function is currently provided by the Internet Society.EID 266 (Verified) is as follows: Section: 4.2 Original Text: The ToUnicode output never contains more code points than its input. This is not true; I have constructed a counterexample. Corrected Text: The Punycode decoder can never output more code points than it inputs, but Nameprep can, and therefore ToUnicode can.Notes:


text:
An enduring favorite, our comfortable classic polo is anything but ordinary. With superior wrinkle and shrink resistance, a silky soft hand and an incredible range of styles, sizes and colors, it's a first-rate choice for uniforming just about any group.
color | Black, Blue, Green, Orange, Purple |
size | 2XL, 3XL, Extra Large, Large, Medium, Small |

subset: commoncrawl


text:
S: bust 26 in, shoulder 18 in
M: bust 28 in, shoulder 18 in
L: bust 30 in, shoulder 18 in
S: waist 29 in
M: waist 31 in
L: waist 33 in
ALiAZON wasn't born in a stuffy boardroom, but from a simple passion: we believe everyone deserves to feel incredible in their own skin. Founded by a group of fashion-obsessed friends (that's you and us!), we were tired of clothes that looked good but felt awful, or were comfy but looked like yesterday's news.
We believe fashion is more than just following trends; it's a powerful tool for expressing yourself and building confidence. That's why we curate collections that cater to a variety of styles, from the effortlessly chic to the boldly trendy. We want you to feel empowered to embrace your unique sense of self, no matter what that looks like.
At ALiAZON, we believe in fashion that transcends trends, reflecting individuality and empowerment with every garment. Our journey began with a vision to redefine online shopping, offering a curated collection of women's fashion that speaks to diverse tastes and personalities.
Driven by a passion for style and a commitment to quality, we strive to create an inclusive shopping experience where every woman can find pieces that inspire confidence and self-expression. From casual essentials to statement pieces, our handpicked selection ensures versatility without compromising on elegance or comfort.
Rooted in the ethos of innovation and customer satisfaction, ALiAZON stands as a beacon of creativity and authenticity in the ever-evolving world of fashion. With each piece carefully selected and crafted, we aim to empower women to embrace their unique style journeys and make a statement with every ensemble.
Join us on this exciting adventure as we continue to celebrate individuality, diversity, and the beauty of self-expression through fashion. At ALiAZON, it's not just about clothing; it's about crafting experiences and empowering women to embrace their style stories, one outfit at a time.
Welcome to ALiAZON, where fashion meets individuality! At ALiAZON, we believe that every woman is a canvas of uniqueness waiting to be adorned with style and elegance. Our online store is not just a destination for clothing; it's a celebration of diversity and self-expression.
Founded with a passion for empowering women through fashion, ALiAZON curates a collection that speaks to your distinct taste and personality. From timeless classics to bold statements, our range reflects the multifaceted beauty of the modern woman.ABOUT OUR BRAND
Founded with a passion for empowering women through fashion, ALiAZON curates a collection that speaks to your distinct taste and personality. From timeless classics to bold statements, our range reflects the multifaceted beauty of the modern woman.
What sets ALiAZON apart is our commitment to quality, affordability, and inclusivity. We strive to offer a diverse selection that caters to various body shapes, sizes, and styles. Our pieces are not just garments; they're an extension of your identity.
As you explore ALiAZON, immerse yourself in a world of fashion where every click brings you closer to self-discovery. We're not just an online store; we're your style companion on the journey of embracing your true self. Join us, and let's redefine fashion together!
Our purpose is to make fashion accessible to everyone. We believe that everyone deserves to look and feel their best, regardless of their budget. We also want to promote sustainability and ethical fashion.
Our core values are:
In conclusion, ALiAZON is not just a women's clothing online store; it's an enchanting narrative waiting to unfold. Crafted with passion, driven by diversity, and guided by the spirit of empowerment, our 'About Us' is an open invitation to embark on a style journey where you are the protagonist. Welcome to ALiAZON, where your style story begins, and the possibilities are as endless as your individuality.
FROM OUR FASHION FAMILY TO YOURS,THANK YOU FOR CHOOSING ALiAZON.....
ALiAZON is proud to partner with St. Jude Children's Hospital in the fight against childhood cancer. Your generous donation will help provide lifesaving treatment and hope for families facing this difficult journey. Together, we can make a difference.
Thank You for Your Compassion!
Together with ALiAZON, we're making a difference in the lives of these brave children.


text:
Price | Bid Increment |
$0 | $10 |
$200 | $20 |
$500 | $50 |
$1,000 | $100 |
$2,000 | $200 |
$5,000 | $500 |
$10,000 | $1,000 |
Four vintage teddy bears, tallest - 13 1/2
Competitive in-house shipping is available for this lot.Available payment options
All pick-ups or shipping arrangements must be made within seven (7) days after auction PICK-UP Payment in full is required in order to pick-up your items. See our website home page for a link to schedule pick-ups, www.pookandpook.com. To schedule an appointment for more than 10 small items, please schedule two back-to-back appointments. For large items (furniture, etc.), please call our office at (610) 269-4040 to schedule. Please bring your own packing materials and assistance for loading items into your vehicle. SHIPPING Pook & Pook offers in-house shipping for select items. For items not eligible for in-house shipping, Pook & Pook has provided (see below) a list of trusted local professionals who have offered their services. Please email email@example.com with any questions regarding shipping or pick-up. In-house shipping (small, sturdy, light-weight, non-breakable items, jewelry, currency) Please email Hannah Barchuk at email@example.com For shipment of small items (art, pottery, and fragile decorative accessories), the following companies have offered their services: The Packaging Store in Lansdale, PA www.packandshipnow.com firstname.lastname@example.com (215) 361-6940, fax: (215) 361-6941 Philadelphia Mailroom www.philadelphiamailroom.com firstname.lastname@example.com (215) 745-1100; fax: (215) 745-1102 For shipment of large items (furniture, sculptures, etc.), the following companies have offered their services: Craters and Freighters in Perkiomenville, PA www.cratersandfreighters.com email@example.com (610) 397-0488 Mt. Everest Moving Company in Ephrata, PA everestmoving.com firstname.lastname@example.com (717) 314-7647 HOW THE SHIPPING PROCESS WORKS: 1. Get a Quote or Quotes – You contact us or any one or more of the shippers listed (or a shipper of your own choosing) to obtain a shipping estimate. Be sure to provide us or the shipper with the following information: Your Name (as it appears on your invoice), Lot#(s) Purchased, Invoice Total, and the Zip Code to which the item(s) is being shipped. Shipping and handling charges are based on packaging, size of item, weight of item, zip code, and insured value. 2. Notify Us – Contact us to let us know the name of your chosen shipper, email firstname.lastname@example.com or call (610) 269-4040. 3. Items Collected – Your item(s) is collected for your chosen shipper. Outside shippers are scheduled throughout the week to come collect your purchased item(s). Independent shippers not listed above must call (610) 269-4040 to schedule a pick-up time. 4. Items Packed and Shipped – Your item(s) is then packed and shipped to your specifications by your chosen shipper. Please allow 3-5 business days from the time of collection. 5. Pay for Shipping – Packing and shipping costs are separate from your auction invoice. Please provide your chosen shipper with payment information to cover the cost of shipping and handling. Pook & Pook will not release items to any shipper until your auction invoice has been paid. New customers paying their auction invoice with a personal/business check or international money order/cashier's check will delay release of items for 10 days. The release date is supplied to the shipper who will not ship your item(s) sooner unless you provide Pook & Pook with a copy of your cancelled check (we cannot check this from our bank). If you have any questions about paying for your auction invoice, please contact at firstname.lastname@example.com. All items must be picked up, or shipping arrangements made, within one week of the day of sale. NOTE: Items left here more than ten (10) days will incur storage fees at a rate of $5.00 per lot per day (this rate applies to all items regardless of size or value).


text:
BMW Z3 1996 - 2002 WeatherPRO Car Cover
- Extremely versatile
- Anti scratch inner lining
- Waterproof and breathable
- Quality zipped storage holdall
- 2 year warranty
- Colour grey
Item Description
When it comes to car covers the WeatherPRO is one of our most popular and versatile in our range of PRO covers. It offers complete reliability throughout the winter and summer. It can withstand hot to below freezing temperatures and can be used outdoors all year round or on cars stored indoors. This is an affordable option as the covers versatility allows it to be used for many different purposes making it a great all rounder and popular with so many car enthusiasts.
It's all in the detail
It's all in the detail
What sets this cover apart from others is its technically advanced 4 layered fabric. The UV resistant top layer prevents sun damage to paintwork; it has a padded and breathable membrane, a fully waterproof layer to repel water and an anti scratch inner layer. To keep the cover securely in place it has elasticated hems and two under body straps. In fact every detail has been thought about including re-enforced seams and rubber caps to protect buckles from damaging the paintwork.
Fitted to your car's shape
Fitted to your car's shape
It is a tailored/fitted car cover which means it has been designed to fit your cars make and model, not generic sizing. This ensures the cover not only looks great but stays in place too. In most cases mirror pockets are built into the design of the cover, please see photos above to see if your cover has this feature.
We work closely with our customers and manufacturer to ensure a great fit every time.
Speedy delivery
We work closely with our customers and manufacturer to ensure a great fit every time.
Speedy delivery
All our car covers are held in our UK warehouse. We use a next day delivery service in most cases.
Additional security
Additional security
For cars stored in public places you may wish to purchase a locking kit, the cover has eyelets inserted into the cover for this purpose.
Sample fabric
Sample fabric
If you would like a sample of the fabric used for the WeatherPRO please contact us and we will post one out to you - free of charge.


text:
Eddie Ryan
Step 1 : Add Credits to your Phone Account
Your Phone Balance: | 0 Credits Add Credits |
Step 2 : Call
Calling From: | |
Call: |
+1-213-374-3555 (Standard Rates May Apply) |
Your Pin: |
(This is not needed if you have set up an Easy Call number) |
Step 3 : Choose an Extension for Eddie Ryan
Public Extension for all users: | 537-552 | 60 Credits Per Minute |
* Calls are rounded up to the nearest minute when deducting credits at the end of a call. Calls will be automatically ended when you do not have sufficient credits to continue the call for another full minute. Credits added to your account while a call is in progress cannot be applied to that call; the call will terminate when the allotted credits for that call have been used and you will need to make a new call to continue chatting.


text:
Transportation might become a headache for you when there is a large number of people to go with. Of course, when there are more than a dozen people in a group, it becomes inconvenient to use regular cars. This is where bus hire companies and bus hire directories come in Continue Reading
flavor fragrance
dapietro corner
archie and kirk
senova vancouver
quayside emporium
restaurant tante jeanne
aficionado profesional
es media group
klimat lounge
lauren ralphs outlet uk
ralph lauren uk
feirao da caixa
molot guns
michael kors discount
kazbar clapham
fromagerie maitre corbeau
ol0 info
brnensky orloj
ex card info
binyu bishiri
auto accessori
stay hard longer
shadow seekers
Kapelleveld Garden City
albanian conference interpreter
the day shall come film
ice diving
inn at lathones uk
bufc supporters clube
resto ware house uk
the winchester royal hotel
burbs bags uk
avenue fitness
ayo jalan jajan
festival antes
herb trimpe
levesque for congress
Odessa Realt
sheila ferrari
shop viktor viktoria
corner house gallery uk
dkls signature homes
conanexiles data base
ut real estate
top windows 7 themes
show dogs express uk
citi cards login
automotive financial reports
log house at sweet trees
spares 4 cars
badagry motor world
pcm small business network
pipers notes
tera groupe
drop ads
thames river adventures uk
riding bitch blog
cars 2 day news
festival music week
daily online
texas public studio
paid apps 4 free
san francisco sports bar
helm engine
12th planet 2012
123 gt
michael kors outlet clearance
bee info
palermo bugs
destinos exotico
auto travel
auto travel
fonderie roubaix
sunny side newyork style eat
foto concurso in mujer
city room escape
comic adze
hellenes online
hub thai nyc
points de vue alternatifs
Software Design Website service
masjid al akbar
purple haze rock bar
sirinler cocuk
pb slices
sneakers rules
nato group
energy fitness gyms
full court sports
studio formz
knowledge base ph
wp kraken
tenzing foundation
ggdb outlet usa
dental health reference
bengkel website
potlatch poetry
app matchers
zac mayo for house
day by day onlines
data macau
nike trainers uk
zoom news info
Satori Web & Graphic Design
baby moms club
find swimming pool builders tx
ralph lauren clearance uk
health shop 24x7
health leader ship
school trips plus
lawyer uk
the world of babies
puppy love pets
british car ways
glyde house
travel scotland
health full life
criminal defense vermont
hertfordshire crossroads-south
vader sports uk
gentle dental harrow
elegant international
michael kors outlet kors
burberry bags uk
metricbikes superstore
pinoy tv series hd
android villaz
babur garden
fly to barcelona
novae guilde
viagra canada100mg
visit today uk
braidot twin
the beer growler winston salem
marine management uk
burberry outlet store online
torture law
baron samedi
u7 networks
bowl xtreme
ap travel
travel bali
vdx institutee
igeno safaris
cross road scare north west
chorona feira
daisy baby
schinzel enterprise
healthy you in one minute
block chain conf
legends myths and whiskey


text:
This tip discusses how to exit from insert mode without needing to press Esc. The Vi editor was originally written on an ADM-3A terminal, which had the Escape key positioned where the Tab key occurs on most modern keyboards. Many touch typists appreciate the fact that they can leave their hands on the keyboard home row while using Vim, so there are several ideas for avoiding the Esc key at its current location (pressing Esc generally requires stretching to the top of the keyboard).
No utility programs or operating system tweaks are required for this tip. For other suggestions involving mapping keys with the operating system or utilities, see Map caps lock to escape in XWindows (for Unix-based systems), Map caps lock to escape in Windows (for Windows), or Map caps lock to escape in macOS. Some of the suggestions involve more than avoiding escape; topics also discussed include using the CapsLock key for Ctrl, and avoiding irritations from accidental use of CapsLock.
Avoiding the Esc key[]
If you have an American English keyboard, pressing Ctrl-[ (control plus left square bracket) is equivalent to pressing Esc. This provides an easy way to exit from insert mode.
If you have a keyboard where the bracket is already mapped to Alt Gr-something (like the spanish keyboard), press Ctrl-c to quit insert mode (however, Ctrl-c does not expand abbreviations). :help i_CTRL-C
Use Alt/Meta In a Terminal[]
Alt keys appear on most PC keyboards. Meta keys were used on some old systems.
If you use Vim in a terminal, simply press alt/meta+normal_mode_key. Most terminals send an escape character followed by the normal_mode_key that you pressed, removing the need to press escape yourself.
The terminals konsole and gnome terminal send the escape by default when you press alt/meta+normal_mode_key. For Xterm you can ctrl+click and select the option "Meta sends escape" or "Alt sends escape". [1]
Thus in insert mode pressing alt+h alt+j alt+k alt+l all take you to normal mode and move in the expected direction. You can hold down alt when moving even while in normal mode since the additional ESC that is sent does no harm.
The advantage of using this scheme is that you can use the alt/meta+key combination with any normal mode key, e.g.
- Alt+o opens a new line below the one you are currently editing,
- Alt+A appends to the end of the current line,
- Alt+p pastes at the current insert location.
- Alt+k moves up
Thus using vim via a terminal gives you these short cut powers on any stock standard system without the need to edit each systems vim mappings.
It can be convenient to use a mapping so that pressing a key, or sequence of keys, generates Escape. The :imap
command is used to create the mapping so that it only applies while in insert mode (but see note about :inoremap
For example, the following allows you to press jj
to exit from insert mode: (or jk
, etc)
:imap jj <Esc>
To generate Escape, jj
has to be typed quickly. :help 'timeout'
A problem with mapping a sequence like jj
is that Vim will pause whenever you type j
in insert mode (it is waiting for the next key to determine whether to apply the mapping). The pause is merely a visual distraction which you may not notice, and it does not slow down typing.
For simplicity, we will show :imap
but careful Vimmers are in the habit of using :inoremap
which does not attempt to interpret the result of the mapping (with the :imap
command, the result is scanned to see whether it contains another mapping).
If you are considering putting this map in your .vimrc be careful to not put any comments after it, imap will try to interpret the blank spaces after <Esc> producing random jumps after entering normal mode.
For a better solution without visual distraction, you can consider using https://github.com/zhou13/vim-easyescape/.
Alternative mappings[]
Here are some alternative suggestions:
" Can be typed even faster than jj, and if you are already in " normal mode, you (usually) don't accidentally move: :imap jk <Esc> :imap kj <Esc> " If want to avoid jk in certain languages can use: " (and to make it where order doesn't matter, the second mapping also) :imap jw <Esc> :imap wj <Esc> " Press i to enter insert mode, and ii to exit. :imap ii <Esc> " Pressing Ctrl-L leaves insert mode in evim, so why not in regular vim, too. :imap <C-L> <Esc> " This is a variation on the previous mapping that checks for evim " and only changes the function of <C-L> in regular vim. This allows <C-L> " to still work as usual in evim. See :help insertmode for more. :inoremap <expr> <C-L> &insertmode ? '<C-L>' : '<Esc>' " This is a variation on the previous mapping that additionally checks " for the popup menu (present when doing completions). During completions, " <C-L> adds a character from the current match, so this mapping will " preserve that behavior. See :help popupmenu-keys for more. :inoremap <expr> <C-L> (pumvisible() <bar><bar> &insertmode) ? '<C-L>' : '<Esc>' " Use backtick. :imap ` <Esc> " Two semicolons are easy to type. :imap ;; <Esc> " Press Shift-Space (may not work on your system). :imap <S-Space> <Esc> " Try the following so Shift-Space also enters insert mode. :nmap <S-Space> i " Or just Space to enter insert mode. :nmap <Space> i " In Mac OS X, mapping <S-space> does not work, but the following " is better (press the "apple" key and the space key). " Note that this will conflict with the spotlight shortcut :imap <D-space> <Esc> " On gvim and Linux console Vim, you can use Alt-Space. :imap <M-Space> <Esc>
Using the Tab key[]
- If using MacVim under Mac OS X, see below for a working procedure.
It is possible to map the Tab key but that is not desirable because Ctrl-o and Ctrl-i (Tab) are very useful for jumping to previously visited locations.
With the following in your vimrc, you can press Tab to return to normal mode:
nnoremap <Tab> <Esc> vnoremap <Tab> <Esc>gV onoremap <Tab> <Esc> cnoremap <Tab> <C-C><Esc> inoremap <Tab> <Esc>`^ inoremap <Leader><Tab> <Tab>
In normal mode, you can press prefix keys before a command (for example, 12 for a count). The nnoremap
causes Tab to cancel any prefix keys.
The vnoremap
causes Tab to cancel any selection (gV
is required to prevent automatic reselection).
The onoremap
causes Tab to cancel any operator-pending command (for example, y
The cnoremap causes Tab to cancel any command that was entered.
The first inoremap
causes Tab to exit insert mode, and the `^
restores the cursor position so exiting insert does not move the cursor left.
The second inoremap
, assuming the default leader key, allows you to press \
then Tab to insert a tab character. You may prefer an alternative mapping to make it easier to insert a tab. For example, on some systems, you may be able to use Alt-Tab to insert a tab character with:
inoremap <M-i> <Tab>
Some plugins may remap the Tab key. To remap them back from .vimrc
, use autocmd
au VimEnter * map <Tab> <Esc> au VimEnter * imap <Tab> <Esc> au VimEnter * vmap <Tab> <Esc>
Due to the way that Vim read keys, Ctrl-i is the same as Tab. Therefore, you cannot map Tab to generate Escape, and map Ctrl-i to do something different.
When adjusting indents, you can avoid tabs altogether:
- In normal mode: Type
to shift the line left one 'shiftwidth', or>>
to shift right (and press.
to repeat). - In insert mode: Press Ctrl-d to shift left, or Ctrl-t to shift right.
Tab key under Mac OS X[]
If you are using MacVim under Mac OS X, there is a good method to use the Tab key for Escape. The tool KeyRemap4MacBook can configure the Tab key to act as an Esc key in MacVim only (leaving the rest of the system untouched). Then you can press Ctrl-i to insert a tab character, and can press the Tab key to send Escape to MacVim. To do this, add the following to your private.xml
<!-- TAB key changed to act as ESC, for MacVim only --> <appdef> <appname>MACVIM</appname> <equal>org.vim.MacVim</equal> </appdef> <item> <name>Change Tab to Esc in MacVim</name> <identifier>private.macvimdef</identifier> <only>MACVIM</only> <autogen>--KeyToKey-- KeyCode::TAB, KeyCode::ESCAPE</autogen> </item>
Vim Extension for Visual Code Studio (and Github Codespaces)[]
The popular Vim extension for Visual Code Studio does not support `imap` or `inoremap` as of 2023. However, you can create insert mappings with the `insertModeKeyBindings` field of your `settings.json` file. In the following example, mapping `jk` to Escape:
"vim.insertModeKeyBindings": [ { "before": ["j", "k"], "after": ["<esc>"] } ]
Vim Mode in Obsidian[]
Obsidian is a cross-platform note-taking app with some (limited) Vim capability.
First, enable Vim key bindings under "Editor" settings. Then enable Community Plugins, browse the plugins, and search for "vimrc". You should see the "Vimrc Support" plugin — install it, enable it, and in its settings, choose ".obsidian.vimrc" as your Vimrc file name (or whatever you wish to call it; note if it begins with a dot, you'll need to edit it in the file system as it won't be visible in Obsidian itself). In the configured vimrc file, enter *exactly* the following, assuming you want to map jk to Escape.
imap jk <Esc>
- You must use imap as inoremap is unsupported
- You must use <Esc> and not <esc> or <ESC> (source)
- You'll need to do all of the above for each of your vaults
- You may need to restart Obsidian for this to take effect
Using the Enter key[]
It's very easy to exit insert mode using the Enter key:
:inoremap <CR> <Esc>
An example of using the above would be to type ce
to change to the end of a word, then type new text, then press Enter to return to normal mode.
When you want to enter a newline, you may find that Shift-Enter or Ctrl-Enter works (it should always work in gvim, but might not in a terminal, depending upon your system). If your Shift-Enter or Ctrl-Enter works, and you can get used to it, the above might be all you need. CTRL-J (:help i_CTRL-J) or CTRL-M (:help i_Ctrl-M) could also work.
An alternative would be to map Shift-Enter to generate Escape:
:inoremap <S-CR> <Esc>
Then Enter will always work as expected, and Shift-Enter will always exit insert mode. If Shift-Enter does not work on your system, you might find that Ctrl-Enter (<C-CR>
) does.
Another, more elaborate, alternative is:
function! ToggleEnterMapping() if empty(mapcheck('<CR>', 'i')) inoremap <CR> <Esc>`^ return "\<Esc>" else iunmap <CR> return "\<CR>" endif endfunction call ToggleEnterMapping() inoremap <expr> <S-CR> ToggleEnterMapping() " Optional (so <CR> cancels prefix, selection, operator). nnoremap <CR> <Esc> vnoremap <CR> <Esc>gV onoremap <CR> <Esc>
- Features
- Initially, pressing Enter returns to normal mode.
- In insert mode, pressing Shift-Enter enters "multiline" mode, meaning that pressing Enter will insert a newline.
- In insert mode, after pressing Shift-Enter to enter "multiline" mode, pressing Shift-Enter again exits (returns to normal mode).
- Explanation
The mapcheck()
function returns the current insert-mode mapping for <CR>
(Enter). The empty()
function returns nonzero (true) if there is no such mapping.
The inoremap <expr>
command maps Shift-Enter to generate the expression returned by calling ToggleEnterMapping()
(the code for either Escape or Enter). Calling the function toggles the insert-mode mapping for Enter: if it is mapped, it is unmapped; otherwise it is mapped to <Esc>`^
(generate Escape then go to the ^
Toggling insert mode[]
Press Ctrl-Space to start and to stop insert mode (the same suggestion using Shift-Space is above):
nnoremap <C-space> i imap <C-space> <Esc>
Or you may prefer to map Ctrl-Space to a
rather than i
so that repeatedly pressing Ctrl-Space does not move the cursor back (remember that pressing I
allows you to insert a character at the beginning of the line):
nnoremap <C-space> a imap <C-space> <Esc>
In the terminal <C-space> doesn't work, but <C-@> worked out (at least for me).
<C-space> worked for me in Macvim but not <C-@> or <Nul>, and vice-versa for command-line vim. I ended up mapping <C-space> to <Nul> and mapping with <Nul> for a more general mapping.
An alternative follows. It uses /i
to toggle insertion at the cursor, and /a
to toggle insertion at the end of the line. If you use /i
(or /a
) to insert, you must /i
(or /a
) to exit (not Esc).
nnoremap <silent> /i :let &insertmode=1-&insertmode<CR> inoremap <silent> /i <Esc>:let &insertmode=1-&insertmode<CR> nnoremap <silent> /a :let &insertmode=1-&insertmode<Bar>if &insertmode<Bar>:startinsert!<Bar>endif<CR> inoremap <silent> /a <Esc>:let &insertmode=1-&insertmode<Bar>if &insertmode<Bar>:startinsert!<Bar>endif<CR>
- References
- Comment
Probably can use :set insertmode!
to toggle.
The /
is easy to type, but did you mean to use <Leader>
? Also, why toggle 'insertmode'
? Why not the following (and similar for append):
nnoremap <Leader>i i inoremap <Leader>i <Esc>
Automatically exit Insert mode when you use Up or Down arrows[]
Many people recommend exiting Insert mode if you use the up or down arrow to move to another line. To do so, it is recommended that you add two lines to your vimrc:
inoremap <silent> <Up> <ESC><Up> inoremap <silent> <Down> <ESC><Down>
These two lines mean that pressing ESC is no longer necessary, simply moving the cursor vertically will automatically do it for you.
This works for most simple edits that one encounters but I often found myself having to edit a few lines in close proximity to each other. So this forced me to enter insert mode once for each line. And I would often move to the second or third line with the arrow keys and start typing but nothing would be entered. The fix I found was adding a few short lines to my vimrc:
autocmd InsertEnter * let s:insertLineStart = line(".") function! <SID>InsertModeDown() if line(".") > s:insertLineStart + 1 stopinsert endif return "\<Down>" endfunction function! <SID>InsertModeUp() if line(".") < s:insertLineStart - 1 stopinsert endif return "\<Up>" endfunction inoremap <expr> <Down> <SID>InsertModeDown() inoremap <expr> <Up> <SID>InsertModeUp()
This would allow me to enter Insert Mode and make any necessary changes within 3 lines up or down from where I started Insert mode. If I move further, it automatically returns to Normal mode.
Improving the Esc key[]
You may not find attempts to replace the Esc key satisfactory. However, if you don't like the cursor moving left when you exit from insert mode, you may want to try this variation from the Tab key section above:
inoremap <Esc> <Esc>`^
The above trick means that the cursor will not move if you press i
to enter insert mode, then press Esc to exit. However, pressing a
(append) then Esc will move the cursor, so this "improvement" may not satisfy you.
Command-line mode[]
If you want to map another key to Esc in command-line mode, if you attempt a mapping like
cmap <C-space> <Esc>
the resulting mapping will submit the command-line as if pressing Return rather. To create a mapping to act like Esc in command-line mode, you must map to <C-c>
cmap <C-space> <C-c>
Mapping problems[]
Vim runs on many different hardware and software platforms. Therefore some key sequences may not be available. For example, you may be able to map Shift-Space in a GUI Vim, but not in a terminal Vim (and even if you could, if you were running via PuTTY, for example, Vim might not receive the key code).
For Shift-Space in terminal Vim, I used "URxvt.keysym.S-space: \033" in .Xresources. (for the rxvt-unicode terminal emulator).
To test your system, enter insert mode then press Ctrl-K followed by the key of interest (for example, press Ctrl-K then Shift-Space). :help i_CTRL-K
Related tips[]
The following advises using <C-o>
instead of <Esc>
in insert mode mappings.
The following are not related to the Esc key. They try to avoid CapsLock applying in normal mode (so you can insert text in uppercase when needed, but not type in uppercase after exiting insert mode).
Use META + <next action>
Depending on your terminal and vim settings it is possible that ^[ is sent firstly while you are pressing META(Alt)+<key>. So during Insert mode you can press META+j to finish editing, return to Normal mode and move to the next line.
Remap Bash Shell's Escape Key for Readline VI mode
Although slightly off-topic here, you can also remap the ESC key for Bash's Readline VI emulation mode to another key sequence.
Create or modify your $HOME/.inputrc:
# Remap ESC to use my double 'i' keypress to toggle insert or movement # mode. $if mode=vi set keymap vi-command "ii": vi-insertion-mode set keymap vi-insert "ii": vi-movement-mode $endif
You'll likely need to exit all Bash shells for this change to take effect.
NOTE: There is currently a patch proposed on Jan 23 2012 (after bash-4.2_p20 release) for creating a time-out value for readline for double key mappings. This patch can be found on the bug-bash mailing list under the subject "Bash readline remap ESC insert/command mode key". An additional note, the shorter timeout value for double key mappings versus Vim's timeout is much quicker (using approx. half of Vim's wait time) making typing much quicker. Vim's timeout value seems to allow users to type the first char with a finger, and the second using a toe. Without this patch, users will have have problems typing commands containing an 'i' and a work around is to type 'i' and then the 'right cursor' key. In short, get the patch or await >bash-4.2_p20?
META + <normal key> prints accent character since upgrade to Vim 8
As of Vim 8, modifyOtherKeys is used by default which enables mapping of keys with arbitrary modifiers. This needs to be disabled in order for META + <normal key> to work, see: https://github.com/vim/vim/issues/5200
Put this into your .vimrc:
let &t_TI = ""
let &t_TE = ""


text:
Your pets provide companionship, unconditional love and plenty of smiles, but they also make you healthier just by living with you. The health benefits of owning a pet are both physical and psychological, and they extend throughout an owner's life. By keeping your furry companion healthy and happy, you're actually improving your own health and the health of your entire family.
Pets and a Healthy Heart
While eating right and exercise are important components of maintaining a healthy heart, sharing your home with a pet can be another way to boost your cardiovascular health, according to health research institutes. Owning a pet is linked to lower blood pressure, lower cholesterol levels and lower triglyceride levels.
Exercise and Your Pet
If you have a dog, your daily walk together gives both of you needed exercise. Cats often enjoy active play with an owner-controlled string or fishing-pole toy, so it's easy to get small bursts of activity in throughout your day when you've got a feline in the home. Even pet owners with rabbits, hamsters or birds get more exercise than those without any pets because feeding, cage maintenance and playing with your pet are all sources of physical activity.
Children and Pets
Owning pets may be particularly beneficial to kids. According to medical study, children living with two or more dogs or cats in the household during infancy are less likely to have allergies by age six or seven . Pets also provide needed emotional support when a child is upset or troubled, and pets can help children develop empathy and responsibility.
Pets and Elder Health
Older adults often have more healthcare needs, but owning pets can help keep them healthier as they age. Adults 65 and older who have a pet are better able to maintain and improve their ability to handle activities of daily living, which means that owning a pet can help you live independently for longer. Pets also provide social companionship for senior adults, which is vital to psychological health and well being.
Household Companions as Health Monitors
If you have a chronic condition or disability, pets can act as a health monitor and alert you or others to potential problems. In some cases, dogs can alert owners to an impending epileptic seizure or dangerous changes in blood sugar levels, according to a published medical report.
National Institute of Health, "Can Pets Keep You Healthy?" News in Health, February 2009
Wells, Deborah L. "Domestic Dogs and Human Health: An Overview." British Journal of Health Psychology, December 2010.
Raina, P; Waltner-Toews, D; Bonnett, B; Woodward, C; Abernathy, T. "Influence of Companion Animals on the Physical and Psychological Health of Older People: an Analysis of a One-Year Longitudinal Study." Journal of the American Geriatrics Society, March 1999.
Ownby, DR; Johnson, CC; Peterson, EL. "Exposure to Dogs and Cats in the First Year of Life and Risk of Allergic Sensitization at 6 to 7 Years of Age." Journal of the American Medical Association, August 2002.


text:
How can you enter to win?
leave a separate comment for each and if you're a no-reply blogger leave your email address
1. Stop by the shop and let us know your favorite item.
2. "like" Fabric Shoppe on facebook
3. follow Jody on pinterest
4. follow Jody on twitter
This giveaway is now closed.


text:
There are many benefits to homeownership. One of the top benefits is protecting yourself from rising rents, by locking in your housing cost for the life of your mortgage.
Don't Become Trapped
A recent article by Apartment List addressed rising rents by stating:
"Rents are up 2.7% year-over-year at the national level. Year-over-year growth continues to fall between the 2.1% rate from this time last year and the 3.4% growth rate from October 2015."
The article continues explaining that:
"Despite the seasonal slowdown, rents are still up year-over-year in 89 of the 100 Largest cities.
Additionally, the Urban Institute revealed that,
"Over a quarter of renters, or 11.1 million households, are severely cost burdened, spending at least half their income on rental housing.
These households struggle to save for a rainy day and pay other bills, including groceries and healthcare.
It's Cheaper to Buy Than Rent
As we have previously mentioned, the results of the latest Rent vs. Buy Report from Trulia shows that homeownership remains cheaper than renting with a traditional 30-year fixed rate mortgage in the 100 largest metro areas in the United States.
The updated numbers show that the range is an average of 6.5% less expensive in San Jose (CA), all the way up to 57% less expensive in Detroit (MI) and 37.4% nationwide!
Know Your Options
Perhaps you have already saved enough to buy your first home. A nationwide survey of about 24,000 renters found that 80% of millennial renters plan to eventually buy a house, but 72% cite affordability as their primary obstacle. Aside from affordability, one in three millennial renters have concerns about their credit scores, and another 53% said that a down payment is an obstacle.
Many first-time homebuyers who believe that they need a large down payment may be holding themselves back from their dream homes. As we have reported before, in many areas of the country, a first-time home buyer can save for a 3% down payment in less than two years. You may have already saved enough!
Bottom Line
Don't get caught in the trap that so many renters are currently in. If you are ready and willing to buy a home, find out if you are able. Let's get together to determine if you can qualify for a mortgage now!


text:
How to use our charts
1. Select a show from under the "Display Chart For" heading.
2. The show's most recent season will be displayed under it, but there may be others to choose from.
3. You can also select a second show for comparison under the "Compare with" heading.
4. Click the "Get Chart" button to display the chart for the selected shows.
5. Hover your mouse over points on the chart to see each episode's rating and air date.
Tip: Comparing charts is most useful if you select shows from similar timeslots and genres.
(Example: Compare two dramas that air Mondays at 8:00pm)


text:
Has the recession made you fat?
To the long and growing list of risk factors known to increase the risk of obesity, scientists recently added a new one: scarcity.
People given subtle cues that they may have to confront harsh conditions in the near future choose to eat higher-calorie food than they might do otherwise, a response that researchers believe is shaped by the long hand of evolution.
Evolutionary biologists have long speculated that in prehistoric times, when the blueprint of modern human behavior was created as our ancestors struggled for survival, gluttony may have been a useful response to scarcity: If you knew — or feared — a famine was coming, it made sense to tuck away as many calories as possible to prepare for it.
That response, while perfectly suited for prehistoric times, is maladaptive today, when more people in wealthy countries such as the United States are dying from diseases related to obesity rather than starvation. But behavior is not easily changed: The experience of food surplus is a relatively recent development in our history, and ancient rules about how to respond to adversity are likely hardwired into the brain. Our evolution hasn't had a chance to catch up, if you will, to dramatic changes in our ecosystems.
Here's the evidence for the theory that subtle cues about environmental adversity could be partly behind our nation's obesity epidemic: Researchers recently stopped 121 pedestrians on a college campus and asked them to participate in a study. The volunteers were given a bag of M&Ms; some were told the M&Ms were high calorie and some were told their M&Ms were low-calorie.
The researchers then exposed the volunteers to unconscious signals – words that indicated harsh environmental conditions such as "survival," "withstand," "persistence," "shortfall," "struggle" and "adversity." When subtly prompted in this way to think about harsh conditions, volunteers given the high-calorie M&Ms ate nearly twice as many as volunteers given the low-calorie M&Ms.
In a paper published in the journal Psychological Science, researchers Juliano Laran and Anthony Salerno at the University of Miami suggested this meant that "high calorie foods, which are useful when resources are scarce, are consumed in larger quantities when an environment is perceived to be harsh, whereas low-calorie foods are consumed in smaller quantities."
In a second experiment, the researchers found that when volunteers subtly induced to think about harsh environmental conditions were also made to feel that they were starved of resources, they consumed more calories than volunteers who had been induced to think about harsh environmental conditions but were not given a feeling of scarcity.
Of course, it's not all biology. Other factors such as opportunity and less exercise may also play a role in why we stock up on calories during hard times, Marcia Pelchat of the Monnell Chemical Senses Center in Philadelphia told us last year.
Laran and Salerno suggest that one implication of their new research is that people's life history needs to be a part of understanding their struggles with obesity and dieting: Not all heavy-eaters are gluttonous and hedonistic – a history of scarcity can make people vulnerable to overeating.
They point out that current public health approaches to obesity largely assume people would choose to eat less when they are given information about the amount of calories in various foods.
But posting calories on menus, most recently McDonald's, may not really decrease consumption of high-calorie foods. "In fact, making the high number of calories in a food item salient may draw people to it," the researchers wrote.
"The key is to understand that the choice of unhealthy food is not always the result of a willingness to indulge but can sometimes be the result of exposure to information suggesting environmental harshness."
Sometimes, in other words, reaching for that last french fry – when you're already full – may not be entirely your fault.
Copyright 2021 NPR. To see more, visit https://www.npr.org.


text:
Regardless of programming language(s) or operating system(s) used or the environment they develop for, what should every programmer know?
Some background:
I'm interested in becoming the best programmer I can. As part of this process I'm trying to understand what I don't know and would benefit me a lot if I did. While there are loads of lists around along the lines of "n things every [insert programming language] developer should know", I have yet to find anything similar which isn't limited to a specific language.
I also expect this information to be of interest and benefit to others.


text:
2013 BMW X5 Series F15 Service and Repair Manual
The BMW Manuals are the official factory documents which contain all relevant information on the vehicle, similar to a workshop manual. The manual will provide different repair methods and procedures for your vehicle so that you can effectively perform maintenance.
People watching this product now!
Delivery via Email
Carrier information
20k products
Payment methods
24/7 Support
Unlimited help desk
The BMW Repair Manuals are a comprehensive collection of machine-specific strategies and service procedures for BMW automobiles. Each manual includes diagrams, specifications, performance data and more making them an indispensable tool for DIY mechanics as well as professionals. We have complete BMW repair manuals including service information for your mechanic or DIYer.
Table of Content
* Maintenance
* Engine
* Control System
* Mechanical
* Fuel Service Specifications
* Emission Control
* Intake Exhaust Cooling
* Lube
* Ignition Starting Charging
* Auto Transmission Clutch
* Manual Transmission
* Transfer Propeller Shaft
* Drive Shaft
* Differential
* Axle Suspension
* Tire & Wheel
* Brake Control
* Brake
* Parking Brake
* Steering Column
* Power Steering
* Air Condition
* Suppl Restraint System
* Seat Belt
* Engine Immobilizer
* Cruise Control
* Wiper & Washer
* Door Lock
* Meter Audio/Visual
* Horn
* Windshield/Glass Mirror
* Instrument Panel
* Seat
* Engine Hood/ Door
* Exterior & Interior
* Electrical
* Multiplex/ Can Communication
* And much more
More about BMW Repair Manuals
A BMW Service Manual details all of the basic operations, as well as chassis and body specifications. It contains information including engine dimensions and specifications, electrical systems, brake systems, steering systems and suspension. Discover what is covered in a BMW Manual by learning more about the BMW Service and Repair Manuals available to you here at bmwmanualspro.
Compatible: All Versions of Windows AND Mac
Printable: Yes
Language: English
Requirements: Adobe Reader and Win they are free online.
BMW Repair manuals contain information on how to repair, maintain and fix your BMW vehicle. These manuals will provide different repair methods and procedures for your vehicle so that you can effectively perform maintenance.


text:
Our CC0017-00 cabinet crown is available in a variety of species of wood. If you would like to inquire about this product, give us a call or use the form at the bottom of the page.
If you would like to print out this product at the correct scaled sizing, click here to print out the profile on a standard 8 1/2" x 11" piece of paper.
For more information, Contact Us!
Contact us using the form below, or if you prefer to see us in person, head to our Our Location page to see our full contact information and directions to our store.
If you'd just like to call us, our phone number is 780-447-1021
Thanks for contacting Woodchucks! We'll get back to you as soon as we can.


text:
Stern Drive Repair Manuals
Stern Drive How-To's
How To Remove a Mercruiser Outdrive (Video)
Video Transcript
What I'd like to do is show you the parts of the sterndrive. You can watch the videos on YouTube no one seems to show you the whole process. If people talk about the wide pipe, that's this part along here. So your exhaust flows down there and then out through the transom into your exhaust and down through the hub. This particular application a through hull exhaust, so the previous owner blocked them off with new pipes. Normal setup exhaust pipe goes through there.
The steering mechanism is connected to the top, while this drag link and this lead here. If you have got slop in the steering, it's the back of that lever there you have to replace the bush. To do that involves pulling the whole catastrophe. Okay from the transom pipe that's inside the boat and that space there would normally be taken up by the transom, is connected by 8 bolts or dials connected to this.
To remove these and replace them with new ones you may need to use heat. I found the easiest way to do it is running a whirl out of the boat. The localized heat comes through the element and frees it up easier. You are not using a blow torch and doing any other damage. That's your so-called transom assembly on the outside. What that does; there is a pivot point here at the top that's where your steering goes. Typically if you've got water coming into the boat, it would be because that bush which sits up in there is worn and allows water to enter the boat. They are steel and they do rust away. So there's a pin at the top and a pin at the bottom that will facilitate your turning.
Then you have your gimbal ring. Now the gimbal ring fits under that top and bottom and it pivots here on these so that they can go up and down, in and out, very simple. Your dreaded billows are up inside in there. Not a big deal to replace. To pull the drive, undo these six screws. Once you undo those six screws that drive assembly will pull away and the input shaft and all will come out with it.
If you want to remove to lever link, it's the same setup as an outboard. Three bolts this side, three bolts that side. You might find there is a hidden one down in here and one up in here or down that way. Check your manual, that just slides straight off. These drives are simply a right angle drive there and right angle drive here, that's all they are. There is no mystery to it. These particular ones the TR2 are similar size to a Bravo screens up to a 20 inch prop for larger applications. Once you understand that you have got three components; your leg, your gimbal housing, forget about your gimbal bearing everybody seems terrified of them it's just a bearing. I'll show one in a second. There is your gimbal bearing, nothing special about that, by another one and replace it. To pull them out use a slide hammer. Some of the new ones turn, check your manual before you start.
And here we have the universal joints and your input shaft. This is inside the boat. Imagine you're inside the boat, this piece here is what connects on the back of your flywheel. The TR2 leg fits on the back of the gearbox. So that's how it works. That uni joint will take up any turn left or right or any tilt up or down. Once that's in the boat this is all sealed with a simple flex assembly unit so that no water can leak in there. Your exhaust flows out here. The two pipes, the trim and tilt rams go down and into that cavity. Remember that's sealed up watertight and come here underneath. So if you wonder where those disappear to, unblock that, they are just two hoses in the top. Until next time safe boating.
Video courtesy of Cutthroat Jake.


text:
1Every friend declares friendship,
but there are friends who are friends in name only.a
2Is it not a sorrow unto death
when your other self becomes your enemy?
3"Alas, my companion! Why were you created
to fill the earth with deceit?"
4A harmful friend will look to your table,
but in time of trouble he stands aloof.
5A good friend will fight with you against the foe,
and against your enemies he will hold up your shield.
6Do not forget your comrade during the battle,
and do not neglect him when you distribute your spoils.
7Every counselor points out a way,
but some counsel ways of their own.
8Watch out when one offers advice;
find out first of all what he wants.
For he also may be thinking of himself—
Why should the opportunity fall to him?
9He may tell you how good your way will be,
and then stand by to see you impoverished.
10Seek no advice from your father-in-law,
and from one who is envious of you, keep your intentions hidden.
11Seek no advice from a woman about her rival,
from a coward about war,
from a merchant about business,
from a buyer about value,
from a miser about generosity,
from a cruel person about well-being,
from a worthless worker about his work,
from a seasonal laborer about the harvest,
from an idle slave about a great task—
pay no attention to any advice they give.
12Instead, associate with a religious person,
who you know keeps the commandments;
Who is like-minded with yourself
and will grieve for you if you fall.
13Then, too, heed your own heart's counsel;
for there is nothing you can depend on more.
14The heart can reveal your situation
better than seven sentinels on a tower.
15Then with all this, pray to God
to make your steps firm in the true path.
Wisdom and Temperance
16A word is the source of every deed;*
a thought, of every act.b
17The root of all conduct is the heart;
18four branches it shoots forth:
Good and evil, death and life,
and their absolute mistress is the tongue.c
19One may be wise and benefit many,
yet appear foolish to himself.
20One may be wise, but if his words are rejected,
he will be deprived of all enjoyment.*
22When one is wise to his own advantage,
the fruits of knowledge are seen in his own person.
23When one is wise to the advantage of people,
the fruits of knowledge are lasting.d
24One wise for himself has full enjoyment,
and all who see him praise him.
25The days of one's life are numbered,
but the life of Israel, days without number.
26One wise among the people wins a heritage of glory,
and his name lives on and on.e
27My son, while you are well, govern your appetite,*
and see that you do not allow it what is bad for you.
28For not everything is good for everyone,
nor is everything suited to every taste.f
29Do not go to excess with any enjoyment,g
neither become a glutton for choice foods;
30For sickness comes with overeating,
and gluttony brings on nausea.
31Through lack of self-control many have died,
but the abstemious one prolongs life.
* [37:16–26] Thoughts determine action. Wisdom is the source of good and life; folly, of evil and death (vv. 16–18). If the fruits of a person's wisdom benefit himself, he may be praised in his own lifetime; if they benefit others, the praise endures after him, in their lives (vv. 19–26).
* [37:20] Verse 21 appears only in Greek, but not in the Hebrew, which is the basis for the translation here.
* [37:27–31] Temperance and self-control should govern appetite for food, which is intended not to destroy but to preserve life.
e. [37:26] Sir 39:9; 44:13–16.
f. [37:28] 1 Cor 6:12; 10:23.
Copyright 2019-2024 USCCB, please review our Privacy Policy