text:
package org.apache.flex.forks.batik.bridge;

import java.awt.Shape;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import java.util.StringTokenizer;
import java.util.List;
import java.util.ArrayList;

import org.apache.flex.forks.batik.gvt.CompositeGraphicsNode;
import org.apache.flex.forks.batik.gvt.GraphicsNode;
import org.apache.flex.forks.batik.gvt.font.GVTFontFace;
import org.apache.flex.forks.batik.gvt.font.Glyph;
import org.apache.flex.forks.batik.gvt.text.TextPaintInfo;
import org.apache.flex.forks.batik.parser.AWTPathProducer;
import org.apache.flex.forks.batik.parser.ParseException;
import org.apache.flex.forks.batik.parser.PathParser;

import org.w3c.dom.Attr;
import org.w3c.dom.Element;
import org.w3c.dom.NamedNodeMap;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

/**
 * Bridge class for the <glyph> element.
 *
 * @author Bella Robinson
 * @version $Id: SVGGlyphElementBridge.java 501922 2007-01-31 17:47:47Z dvholten $
 */
public class SVGGlyphElementBridge extends AbstractSVGBridge
    implements ErrorConstants {

    /**
     * Constructs a new bridge for the <glyph> element.
     */
    protected SVGGlyphElementBridge() {}

    /**
     * Returns 'glyph'.
     */
    public String getLocalName() {
        return SVG_GLYPH_TAG;
    }

    /**
     * Constructs a new Glyph that represents the specified <glyph> element
     * at the requested size.
     *
     * @param ctx The current bridge context.
     * @param glyphElement The glyph element to base the glyph construction on.
     * @param textElement The textElement the glyph will be used for.
     * @param glyphCode The unique id to give to the new glyph.
     * @param fontSize The font size used to determine the size of the glyph.
     * @param fontFace The font face object that contains the font attributes.
     *
     * @return The new Glyph.
     */
    public Glyph createGlyph(BridgeContext ctx,
                             Element glyphElement,
                             Element textElement,
                             int glyphCode,
                             float fontSize,
                             GVTFontFace fontFace,
                             TextPaintInfo tpi) {

        float fontHeight = fontFace.getUnitsPerEm();
        float scale = fontSize/fontHeight;
        AffineTransform scaleTransform
            = AffineTransform.getScaleInstance(scale, -scale);

        // create a shape that represents the d attribute
        String d = glyphElement.getAttributeNS(null, SVG_D_ATTRIBUTE);
        Shape dShape = null;
        if (d.length() != 0) {
            AWTPathProducer app = new AWTPathProducer();
            // Glyph is supposed to use properties from text element.
            app.setWindingRule(CSSUtilities.convertFillRule(textElement));
            try {
                PathParser pathParser = new PathParser();
                pathParser.setPathHandler(app);
                pathParser.parse(d);
            } catch (ParseException pEx) {
                throw new BridgeException(ctx, glyphElement,
                                          pEx, ERR_ATTRIBUTE_VALUE_MALFORMED,
                                          new Object [] {SVG_D_ATTRIBUTE});
            } finally {
                // transform the shape into the correct coord system
                Shape shape = app.getShape();
                Shape transformedShape
                    = scaleTransform.createTransformedShape(shape);
                dShape = transformedShape;
            }
        }

        // process any glyph children

        // first see if there are any, because don't want to do the following
        // bit of code if we can avoid it

        NodeList glyphChildren = glyphElement.getChildNodes();
        int numChildren = glyphChildren.getLength();
        int numGlyphChildren = 0;
        for (int i = 0; i < numChildren; i++) {
            Node childNode = glyphChildren.item(i);
            if (childNode.getNodeType() == Node.ELEMENT_NODE) {
                numGlyphChildren++;
            }
        }

        CompositeGraphicsNode glyphContentNode = null;

        if (numGlyphChildren > 0) {  // the glyph has child elements

            // build the GVT tree that represents the glyph children
            GVTBuilder builder = ctx.getGVTBuilder();

            glyphContentNode = new CompositeGraphicsNode();

            //
            // need to clone the parent font element and glyph element
            // this is so that the glyph doesn't inherit anything past the font element
            //
            Element fontElementClone
                = (Element)glyphElement.getParentNode().cloneNode(false);

            // copy all font attributes over
            NamedNodeMap fontAttributes
                = glyphElement.getParentNode().getAttributes();

            int numAttributes = fontAttributes.getLength();
            for (int i = 0; i < numAttributes; i++) {
                fontElementClone.setAttributeNode((Attr)fontAttributes.item(i));
            }
            Element clonedGlyphElement = (Element)glyphElement.cloneNode(true);
            fontElementClone.appendChild(clonedGlyphElement);

            textElement.appendChild(fontElementClone);

            CompositeGraphicsNode glyphChildrenNode
                = new CompositeGraphicsNode();

            glyphChildrenNode.setTransform(scaleTransform);

            NodeList clonedGlyphChildren = clonedGlyphElement.getChildNodes();
            int numClonedChildren = clonedGlyphChildren.getLength();
            for (int i = 0; i < numClonedChildren; i++) {
                Node childNode = clonedGlyphChildren.item(i);
                if (childNode.getNodeType() == Node.ELEMENT_NODE) {
                    Element childElement = (Element)childNode;
                    GraphicsNode childGraphicsNode =
                         builder.build(ctx, childElement);
                    glyphChildrenNode.add(childGraphicsNode);
                }
            }
            glyphContentNode.add(glyphChildrenNode);
            textElement.removeChild(fontElementClone);
        }

        // set up glyph attributes

        // unicode
        String unicode
            = glyphElement.getAttributeNS(null, SVG_UNICODE_ATTRIBUTE);

        // glyph-name
        String nameList
            = glyphElement.getAttributeNS(null, SVG_GLYPH_NAME_ATTRIBUTE);
        List names = new ArrayList();
        StringTokenizer st = new StringTokenizer(nameList, " ,");
        while (st.hasMoreTokens()) {
            names.add(st.nextToken());
        }

        // orientation
        String orientation
            = glyphElement.getAttributeNS(null, SVG_ORIENTATION_ATTRIBUTE);

        // arabicForm
        String arabicForm
            = glyphElement.getAttributeNS(null, SVG_ARABIC_FORM_ATTRIBUTE);

        // lang
        String lang = glyphElement.getAttributeNS(null, SVG_LANG_ATTRIBUTE);

        Element parentFontElement = (Element)glyphElement.getParentNode();

        // horz-adv-x
        String s = glyphElement.getAttributeNS(null, SVG_HORIZ_ADV_X_ATTRIBUTE);
        if (s.length() == 0) {
            // look for attribute on parent font element
            s = parentFontElement.getAttributeNS(null, SVG_HORIZ_ADV_X_ATTRIBUTE);
            if (s.length() == 0) {
                // throw an exception since this attribute is required on the font element
                throw new BridgeException
                    (ctx, parentFontElement, ERR_ATTRIBUTE_MISSING,
                     new Object[] {SVG_HORIZ_ADV_X_ATTRIBUTE});
            }
        }
        float horizAdvX;
        try {
            horizAdvX = SVGUtilities.convertSVGNumber(s) * scale;
        } catch (NumberFormatException nfEx ) {
            throw new BridgeException
                (ctx, glyphElement, nfEx, ERR_ATTRIBUTE_VALUE_MALFORMED,
                 new Object [] {SVG_HORIZ_ADV_X_ATTRIBUTE, s});
        }

        // vert-adv-y
        s = glyphElement.getAttributeNS(null, SVG_VERT_ADV_Y_ATTRIBUTE);
        if (s.length() == 0) {
            // look for attribute on parent font element
            s = parentFontElement.getAttributeNS(null, SVG_VERT_ADV_Y_ATTRIBUTE);
            if (s.length() == 0) {
                // not specified on parent either, use one em
                s = String.valueOf(fontFace.getUnitsPerEm());
            }
        }
        float vertAdvY;
        try {
            vertAdvY = SVGUtilities.convertSVGNumber(s) * scale;
        } catch (NumberFormatException nfEx ) {
            throw new BridgeException
                (ctx, glyphElement, nfEx, ERR_ATTRIBUTE_VALUE_MALFORMED,
                 new Object [] {SVG_VERT_ADV_Y_ATTRIBUTE, s});
        }

        // vert-origin-x
        s = glyphElement.getAttributeNS(null, SVG_VERT_ORIGIN_X_ATTRIBUTE);
        if (s.length() == 0) {
            // look for attribute on parent font element
            s = parentFontElement.getAttributeNS(null, SVG_VERT_ORIGIN_X_ATTRIBUTE);
            if (s.length() == 0) {
                // not specified so use the default value which is horizAdvX/2
                s = Float.toString(horizAdvX/2);
            }
        }
        float vertOriginX;
        try {
            vertOriginX = SVGUtilities.convertSVGNumber(s) * scale;
        } catch (NumberFormatException nfEx ) {
            throw new BridgeException
                (ctx, glyphElement, nfEx, ERR_ATTRIBUTE_VALUE_MALFORMED,
                 new Object [] {SVG_VERT_ORIGIN_X_ATTRIBUTE, s});
        }

        // vert-origin-y
        s = glyphElement.getAttributeNS(null, SVG_VERT_ORIGIN_Y_ATTRIBUTE);
        if (s.length() == 0) {
            // look for attribute on parent font element
            s = parentFontElement.getAttributeNS(null, SVG_VERT_ORIGIN_Y_ATTRIBUTE);
            if (s.length() == 0) {
                // not specified so use the default value which is the fonts ascent
                s = String.valueOf(fontFace.getAscent());
            }
        }
        float vertOriginY;
        try {
            vertOriginY = SVGUtilities.convertSVGNumber(s) * -scale;
        } catch (NumberFormatException nfEx ) {
            throw new BridgeException
                (ctx, glyphElement, nfEx, ERR_ATTRIBUTE_VALUE_MALFORMED,
                 new Object [] {SVG_VERT_ORIGIN_Y_ATTRIBUTE, s});
        }

        Point2D vertOrigin = new Point2D.Float(vertOriginX, vertOriginY);

        // get the horizontal origin from the parent font element

        // horiz-origin-x
        s = parentFontElement.getAttributeNS(null, SVG_HORIZ_ORIGIN_X_ATTRIBUTE);
        if (s.length() == 0) {
            // not specified so use the default value which is 0
            s = SVG_HORIZ_ORIGIN_X_DEFAULT_VALUE;
        }
        float horizOriginX;
        try {
            horizOriginX = SVGUtilities.convertSVGNumber(s) * scale;
        } catch (NumberFormatException nfEx ) {
            throw new BridgeException
                (ctx, parentFontElement, nfEx, ERR_ATTRIBUTE_VALUE_MALFORMED,
                 new Object [] {SVG_HORIZ_ORIGIN_X_ATTRIBUTE, s});
        }

        // horiz-origin-y
        s = parentFontElement.getAttributeNS(null, SVG_HORIZ_ORIGIN_Y_ATTRIBUTE);
        if (s.length() == 0) {
            // not specified so use the default value which is 0
            s = SVG_HORIZ_ORIGIN_Y_DEFAULT_VALUE;
        }
        float horizOriginY;
        try {
            horizOriginY = SVGUtilities.convertSVGNumber(s) * -scale;
        } catch (NumberFormatException nfEx ) {
            throw new BridgeException
                (ctx, glyphElement, nfEx, ERR_ATTRIBUTE_VALUE_MALFORMED,
                 new Object [] {SVG_HORIZ_ORIGIN_Y_ATTRIBUTE, s});
        }

        Point2D horizOrigin = new Point2D.Float(horizOriginX, horizOriginY);

        // return a new Glyph
        return new Glyph(unicode, names, orientation,
                         arabicForm, lang, horizOrigin, vertOrigin,
                         horizAdvX, vertAdvY, glyphCode,
                         tpi, dShape, glyphContentNode);
    }
}


text:
/**
 * @author 	Alberto Siena
**/

package eu.riscoss.client;

public abstract class CallbackWrapper<T,V> implements Callback<T> {

	V value;

	public CallbackWrapper( V value ) {
		this.value = value;
	}

	public V getValue() {
		return this.value;
	}

}

redpajama_set_name: RedPajamaGithub


text:
import { join, resolve } from 'path';
import * as sinon from 'sinon';

import { Server } from '../../../src/sdam/server';
import {
  loadLatencyWindowTests,
  runServerSelectionLatencyWindowTest
} from './server_selection_latency_window_utils';
import {
  collectServerSelectionLogicTests,
  runServerSelectionLogicTest
} from './server_selection_logic_spec_utils';

describe('Server Selection Logic (spec)', function () {
  beforeEach(function () {
    if (this.currentTest.title.match(/Possible/)) {
      this.currentTest.skipReason = 'Nodejs driver does not support PossiblePrimary';
      this.skip();
    }
  });

  const selectionSpecDir = join(__dirname, '../../spec/server-selection/server_selection');
  const serverSelectionLogicTests = collectServerSelectionLogicTests(selectionSpecDir);
  for (const topologyType of Object.keys(serverSelectionLogicTests)) {
    describe(topologyType, function () {
      for (const subType of Object.keys(serverSelectionLogicTests[topologyType])) {
        describe(subType, function () {
          for (const test of serverSelectionLogicTests[topologyType][subType]) {
            it(test.name, function () {
              runServerSelectionLogicTest(test);
            });
          }
        });
      }
    });
  }
});

describe('Server Selection Latency Window Tests (spec)', function () {
  const selectionSpecDir = resolve(__dirname + '../../../spec/server-selection/in_window');
  const tests = loadLatencyWindowTests(selectionSpecDir);
  let serverConnect: sinon.SinonStub;

  before(() => {
    serverConnect = sinon.stub(Server.prototype, 'connect').callsFake(function () {
      this.s.state = 'connected';
    });
  });

  after(() => {
    serverConnect.restore();
  });

  for (const test of tests) {
    it(test.description, async function () {
      await runServerSelectionLatencyWindowTest(test);
    });
  }
});


text: export {JYTemporaryDrawer, JYTemporaryDrawerFoundation} from './temporary';


text:
function appendAce( $el ) {
	jQuery( $el ).each(function () {
		if(jQuery(jQuery(this)).is(":visible")) {
			var textarea = jQuery(this);
			var mode = textarea.data('editor');
			var editDiv = jQuery('<div>', {
					position: 'absolute',
					width: '100%',
					height: textarea.closest('.acf-field').height(),
					'class': textarea.attr('class')
			}).insertBefore(textarea);
			textarea.css('display', 'none').removeClass('aced');
			var editor = ace.edit(editDiv[0]);
			editor.renderer.setShowGutter(true);
			editor.getSession().setValue(textarea.val());
			editor.getSession().setMode("ace/mode/html");
			editor.setTheme("ace/theme/ambiance");
			// editor.setTheme("ace/theme/idle_fingers");

			// copy back to textarea on form submit...
			textarea.closest('form').submit(function () {
					textarea.val(editor.getSession().getValue());
			})
		}
	});
}

jQuery( document ).ready(function() {
	 jQuery('.acf-code textarea').addClass('aced');

	 appendAce('.acf-code textarea.aced');

	 if(typeof acf !== 'undefined') {
		 acf.add_action('append', function( $el ){
		 	appendAce('.acf-code textarea.aced');
		 })
	 }

	 if(typeof acf !== 'undefined') {
		 acf.add_action('show_field', function( $field, context ){
		 	appendAce('.acf-code textarea.aced');
		 });
	 }

});


text:
package gov.va.med.lom.foundation.service;

import gov.va.med.lom.foundation.util.AssertionUtils;
import gov.va.med.lom.foundation.util.Describeable;
import gov.va.med.lom.foundation.util.DescriptionBuilder;
import gov.va.med.lom.foundation.util.Precondition;

import java.io.Serializable;

/**
 * Contains the information needed to invoke a service asynchronously.
 */
public class ServiceOperationDescriptor implements Serializable, Describeable {

    /**
     *
     */
    private static final long serialVersionUID = -2270771484344095457L;

    public static void assertValidity(ServiceOperationDescriptor descriptor) {
        Precondition.assertNotNull("serviceDescriptor", descriptor);
        Precondition.assertNotBlank("serviceDescriptor.serviceName",
            descriptor.getServiceName());
        Precondition.assertNotBlank("serviceDescriptor.operationName",
            descriptor.getOperationName());
        Object[] parameters = descriptor.getParameters();
        Precondition.assertNotNull("serviceDescriptor.parameter",
            (Object) parameters);
        Class[] parameterTypes = descriptor.getParameterTypes();
        Precondition.assertNotNull("serviceDescriptor.parameterTypes",
            parameterTypes);
        if (parameters.length != parameterTypes.length) {
            Precondition.fail("The number of serviceDescriptor.parameters " +
               "does not equal the number of serviceDescriptor.parameterTypes");
        }
        for (int i = 0; i < descriptor.getParameters().length; i++) {
            if ((parameters[i] != null) && !AssertionUtils.isAssignableFrom(
                    parameters[i], parameterTypes[i]))
            {
                Precondition.fail("Expected type + " + parameterTypes[i] +
                    " for parameter[" + i + "] but got " + parameters[i].
                    getClass());
            }
        }
    }

    private String serviceName = null;
	private String operationName = null;
	private Object[] parameters = null;
	private Class[] parameterTypes = null;

    /**
     * @return Returns the serviceName.
     */
    public String getServiceName() {
        return serviceName;
    }

    /**
     * @param serviceName The serviceName to set.
     */
    public void setServiceName(String serviceName) {
        this.serviceName = serviceName;
    }

	/**
	 * @return Returns the operationName.
	 */
	public String getOperationName() {
		return operationName;
	}

	/**
	 * @param operationName The operationName to set.
	 */
	public void setOperationName(String operationName) {
		this.operationName = operationName;
	}

	/**
	 * @return Returns the paramList.
	 */
	public Object[] getParameters() {
		return parameters;
	}

	/**
	 * @param parameters The paramList to set.
	 */
	public void setParameters(Object[] parameters) {
		this.parameters = parameters;
	}

	/**
	 * @return Returns the classList.
	 */
	public Class[] getParameterTypes() {
		return parameterTypes;
	}

	/**
	 * @param parameterTypes The classList to set.
	 */
	public void setParameterTypes(Class[] parameterTypes) {
		this.parameterTypes = parameterTypes;
	}

    public void describe(DescriptionBuilder builder) {
        Precondition.assertNotNull("builder", builder);
        builder.header(this);
        builder.openPropertyList();
        builder.appendProperty("serviceName", serviceName);
        builder.appendProperty("operationName", operationName);
        builder.appendProperty("parameters", parameters);
        builder.appendProperty("parameterTypes", parameterTypes);
        builder.closePropertyList();
    }

}


text:
copyright:
  years: 2016

---
{:screen: .screen}
{:shortdesc: .shortdesc}
{:codeblock: .codeblock}

# Habilitación de la autenticación de Facebook para apps de iOS (SDK de Swift)
{: #facebook-auth-ios}

*Última actualización: 15 de junio de 2016*
{: .last-updated}

Para utilizar Facebook como proveedor de identidad en las aplicaciones de iOS, añada y configure la plataforma iOS para la aplicación de Facebook.
{:shortdesc}

## Antes de empezar
{: #facebook-auth-ios-before}
 Debe tener lo siguiente:
* Un proyecto de iOS configurado para funcionar con CocoaPods.  Para obtener información, consulte **Instalar CocoaPods** en [Configuración del SDK de Swift para iOS](https://console.{DomainName}/docs/services/mobileaccess/getting-started-ios-swift-sdk.html).
   **Nota:** no es necesario que instale el SDK de cliente {{site.data.keyword.amashort}} principal antes de proceder.
* Una instancia de una aplicación {{site.data.keyword.Bluemix_notm}} que esté protegida por el servicio {{site.data.keyword.amashort}}. Para obtener más información sobre la creación de un programa de fondo {{site.data.keyword.Bluemix_notm}}, consulte [Cómo empezar](index.html).
* Un ID de aplicación de Facebook. Para obtener más información, consulte [Cómo obtener un ID de aplicación de Facebook desde el portal de desarrolladores de Facebook](https://console.{DomainName}/docs/services/mobileaccess/facebook-auth-overview.html#facebook-appID).

**Importante:** no es necesario que instale el SDK propio de Facebook. El SDK de Facebook se instala automáticamente mediante el pod `BMSFacebookAuthentication` siguiente. Puede omitir el paso **Añadir el SKD de Facebook a su proyecto Xcode** de **Facebook Developer Portal**.

**Nota:** Si bien el SDK de Objective-C recibe total soporte y sigue considerándose como SDK principal para {{site.data.keyword.Bluemix_notm}} Mobile Services, está previsto dejar de mantener este SDK a finales del año en favor del nuevo SDK de Swift.
## Configuración de la aplicación de Facebook para la plataforma iOS
{: #facebook-auth-ios-config}

1. Inicie una sesión en el [panel de control de la app de Facebook](https://developers.facebook.com/apps/).

1. Anote el **ID de app** correspondiente a su app. Necesitará este valor cuando configure el proyecto iOS para la autenticación de Facebook.

1. Pulse **Valores > Añadir plataforma > iOS**.

1. Especifique *bundleId* de la aplicación de iOS. Para encontrar *bundleId* de la aplicación de iOS, busque el **Identificador de paquete** en el archivo `info.plist` o el separador **General** del proyecto Xcode.
**Sugerencia**: habilite el sufijo de esquema URL o el inicio de sesión único si tiene pensado utilizar estas características.

1. Pulse **Save Settings**.

## Configuración de {{site.data.keyword.amashort}} para la autenticación de Facebook
{: #facebook-auth-ios-configmca}

Después de haber configurado el ID y la aplicación de Facebook para dar servicio a clientes de iOS, puede habilitar la autenticación de Facebook en {{site.data.keyword.amashort}}.

1. Abra la app en el panel de control de {{site.data.keyword.Bluemix}}.

1. Pulse **Opciones móviles** y anote los valores correspondientes a **Ruta** (*applicationRoute*) y a **Identificador exclusivo global de la app** (*applicationGUID*). Necesitará estos valores cuando inicialice el SDK.

1. Pulse el mosaico de {{site.data.keyword.amashort}}. Se cargará el panel de control de {{site.data.keyword.amashort}}.

1. Pulse el mosaico **Facebook**.

1. Especifique el ID de aplicación de Facebook y haga clic en **Guardar**.

## Configuración del SDK del cliente de {{site.data.keyword.amashort}} para iOS
{: #facebook-auth-ios-sdk}

### Instalación de CocoaPods
{: #install-cocoapods}

1. Abra Terminal y ejecute el mandato **pod --version**. Si ya tiene CocoaPods instalado, se muestra el número de versión. Puede omitir la sección siguiente para instalar el SDK.

1. Si CocoaPods no está instalado, ejecute:
```
sudo gem install cocoapods
```
Para obtener más información, consulte el [sitio web de CocoaPods](https://cocoapods.org/).

### Instalación del SDK de Swift de cliente de {{site.data.keyword.amashort}} con CocoaPods
{: #facebook-auth-install-swift-cocoapods}

1. Si no tiene `Podfile` en su proyecto iOS, ejecute `pod init` para crear el archivo.

1. Edite el `Podfile` y añada las líneas siguientes:

 ```
use_frameworks!
pod 'BMSFacebookAuthentication'

	```

   **Nota:** si tiene la línea `pod 'BMSSecurity'` en el archivo del pod, debe eliminarla. El pod `BMSFacebookAuthentication` instala todas las infraestructura necesarias.

   **Consejo:** puede añadir `use_frameworks!` al destino de Xcode en lugar de especificarlo en el archivo Podfile.

1. Guarde `Podfile` y ejecute el mandato `pod install` desde la línea de mandatos. CocoaPods instala las dependencias. Se mostrarán el progreso y los componentes que se han añadido.

 **Importante**: ahora debe abrir el proyecto utilizando el archivo `xcworkspace` que ha generado CocoaPods. El nombre suele ser `{nombre-proyecto}.xcworkspace`.

1. Ejecute `open {nombre-proyecto}.xcworkspace` desde una línea de mandatos para abrir su espacio de trabajo de iOS.

### Configuración del proyecto de iOS para la autenticación de Facebook
{: #facebook-auth-ios-configproject}

1. Busque el `info.plist` archivo, que normalmente se encuentra bajo `archivos de soporte` carpeta en el proyecto Xcode.

1. Para configurar la integración con Facebook añada las propiedades siguientes al archivo `info.plist`:

   ![imagen](images/ios-facebook-infoplist-settings.png)

   Actualice las propiedades de esquema URL y FacebookappID con el ID de aplicación de Facebook.

   También puede actualizar el archivo `info.plist` si pulsa con el botón de derecho en el mismo, selecciona **Abrir como > Código fuente** y añade el XML siguiente:

   ```XML
	<key>CFBundleURLTypes</key>
	<array>
		<dict>
			<key>CFBundleURLSchemes</key>
			<array>
				<string>fb{your-facebook-application-id}</string>
			</array>
		</dict>
	</array>
	<key>FacebookAppID</key>
	<string>{your-facebook-application-id}</string>
	<key>FacebookDisplayName</key>
	<string>{your-faceebook-application-name}</string>
	<key>LSApplicationQueriesSchemes</key>
	<array>
		<string>fbauth</string>
		<string>fbauth2</string>
	</array>
	<key>NSAppTransportSecurity</key>
	<dict>
	    <key>NSExceptionDomains</key>
	    <dict>
	        <key>facebook.com</key>
	        <dict>
	            <key>NSIncludesSubdomains</key>
	            <true/>
	            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
	            <false/>
	        </dict>
	        <key>fbcdn.net</key>
	        <dict>
	            <key>NSIncludesSubdomains</key>
	            <true/>
	            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
	            <false/>
	        </dict>
	        <key>akamaihd.net</key>
	        <dict>
	            <key>NSIncludesSubdomains</key>
	            <true/>
	            <key>NSThirdPartyExceptionRequiresForwardSecrecy</key>
	            <false/>
	        </dict>
	    </dict>
	</dict>
```
   Actualice las propiedades de esquema URL y FacebookappID con el ID de aplicación de Facebook. Actualice el valor de FacebookDisplayName con el nombre de la aplicación de Facebook.

    **Importante**: asegúrese de no sustituir las propiedades existentes del archivo `info.plist`. Si hay propiedades solapadas, tendrá que fusionarlas manualmente. Para obtener más información, consulte [Configure Xcode Project](https://developers.facebook.com/docs/ios/getting-started/) y [Preparing Your Apps for iOS9](https://developers.facebook.com/docs/ios/ios9).

## Inicializar el SDK de Swift de cliente {{site.data.keyword.amashort}}
{: #facebook-auth-ios-initalize-swift}

Inicialice el SDK del cliente pasando los parámetros `applicationGUID` y `applicationRoute`.

Un lugar habitual, pero no obligatorio, donde poner el código de inicialización es en el método `application:didFinishLaunchingWithOptions` del delegado de la aplicación.

1. Obtenga los valores de los parámetros de la aplicación. Abra la app en el panel de control de {{site.data.keyword.Bluemix_notm}}. Pulse **Opciones móviles**. Los valores de `applicationRoute` y `applicationGUID` se muestran en los campos **Ruta** e **Identificador exclusivo global de la app**.

1. Importe la infraestructura necesaria en la clase que desea utilizar en el SDK del cliente {{site.data.keyword.amashort}} añadiendo los encabezados siguientes:

 ```swift
 import UIKit
 import BMSCore
 import BMSSecurity
 ```
2. Inicialice el SDK de cliente.	Sustituya los valores de `<applicationRoute>` y `<applicationGUID>` por los valores correspondientes a **Ruta** e **Identificador exclusivo global de la app** que ha obtenido de **Opciones móviles** en el panel de control de {{site.data.keyword.Bluemix_notm}}.
Sustituya `<applicationBluemixRegion>` por la región en la que se aloja su aplicación {{site.data.keyword.Bluemix_notm}}. Para ver la región de {{site.data.keyword.Bluemix_notm}}m pulse en el icono de c ara (![cara](images/face.jpg "Icono de cara")) que se encuentra en la esquina superior derecha del panel de control.

 ```Swift
 let backendURL = "<applicationRoute>"
 let backendGUID = "<applicationGUID>"

 func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

 BMSClient.sharedInstance.initializeWithBluemixAppRoute(backendURL, bluemixAppGUID: backendGUID, bluemixRegion: BMSClient.<applicationBluemixRegion>)

 BMSClient.sharedInstance.authorizationManager = MCAAuthorizationManager.sharedInstance

 FacebookAuthenticationManager.sharedInstance.register()
 ```

1. Notifique la activación de la app al SDK de Facebook y registre el manejador de autenticación de Facebook añadiendo el código siguiente al método `application:didFinishLaunchingWithOptions` en el delegado de la app. Añada este código justo después de inicializar la instancia de BMSClient y registrar Facebook como gestor de autenticación.

 ```Swift
  return FacebookAuthenticationManager.sharedInstance.onFinishLaunching(application, withOptions: launchOptions)
 ```

1. Copie el archivo `FacebookAuthenticationManager.swift` de los archivos fuente de pod `BMSFacebookAuthentication` en el directorio del proyecto.

1. Añada el código siguiente al delegado de la app.

 ```Swift
	func application(application: UIApplication, openURL url: NSURL,
					sourceApplication: String?, annotation: AnyObject) -> Bool {

		return FacebookAuthenticationManager.sharedInstance.onOpenURL(application, url: url, sourceApplication: sourceApplication, annotation: annotation)

	}
 ```

## Prueba de la autenticación
{: #facebook-auth-ios-testing}

Después de inicializar el SDK del cliente y registrar el gestor de autenticación de Facebook, puede empezar a realizar solicitudes al programa de fondo móvil.

### Antes de empezar
{: #facebook-auth-ios-testing-before}

Debe utilizar el contenedor modelo de {{site.data.keyword.mobilefirstbp}} y debe disponer de un recurso que esté protegido por {{site.data.keyword.amashort}} en el punto final `/protected`. Si tiene que configurar un punto final `/protected`, consulte [Protección de recursos](https://console.{DomainName}/docs/services/mobileaccess/protecting-resources.html).

1. Intente enviar una solicitud al punto final protegido del programa de fondo móvil recién creado en su navegador. Abra el siguiente URL: `{rutaAplicación}/protected`.
Por ejemplo: `http://my-mobile-backend.mybluemix.net/protected`
<br/>. El punto final `/protected` de un programa de fondo móivl creado con el contenedor modelo MobileFirst Services Starter se protege con {{site.data.keyword.amashort}}. Se devuelve un mensaje `Unauthorized` en el navegador. Este mensaje se devuelve porque solo se puede acceder a este punto final con aplicaciones móviles instrumentadas con el SDK del cliente de {{site.data.keyword.amashort}}.

1. Utilice la aplicación de iOS para realizar una solicitud al mismo punto final.

	```Swift
  let protectedResourceURL = "<Your protected resource URL>" // any protected resource
  let request = Request(url: protectedResourceURL , method: HttpMethod.GET)
  let callBack:BmsCompletionHandler = {(response: Response?, error: NSError?) in

  if error == nil {
     print ("response:\(response?.responseText), no error")
  } else {
     print ("error: \(error)")
  }
  }

  request.sendWithCompletionHandler(callBack)
 ```

1. Ejecute la aplicación. Aparece una pantalla de inicio de sesión de Facebook.

   ![imagen](images/ios-facebook-login.png)

   Esta pantalla puede ser ligeramente diferente si no ha iniciado una sesión en Facebook.

1. Pulse **Aceptar** para autorizar que {{site.data.keyword.amashort}} utilice su identidad de usuario de Facebook para fines de autenticación.

1. 	Cuando la solicitud se realiza correctamente, se muestra la salida siguiente en la consola de Xcode:

 ```
 "onAuthenticationSuccess info = Optional({
     attributes =     {
     };
     deviceId = 218227041863639;
     displayName = "Don+Lon";
     isUserAuthenticated = 1;
     userId = 218227041863639;
 })
 response:Optional("Hello, this is a protected resouce of the mobile backend application!"), no error
 ```
  {: screen}

1. También puede añadir la funcionalidad de finalización de sesión añadiendo este código:

 ```
FacebookAuthenticationManager.sharedInstance.logout(callBack)
```

 Si invoca este código después de que el usuario haya iniciado sesión en Facebook y el usuario intenta iniciar sesión de nuevo, se le solicitará que autorice a {{site.data.keyword.amashort}} para utilizar Facebook para llevar a cabo la autenticación.

 Para cambiar de usuario, debe invocar este código y el usuario debe finalizar su sesión en Facebook desde su navegador.

 Es opcional pasar `callBack` a la función de cierre de sesión. También puede pasar `nil`.


text:
<?php
function _ops_delete($OID=0,$CID=0) {
  $OID=max(0,intval($OID));
  $CID=max(0,intval($CID));
  $msg='';

  loginRequireMgmt();
  if (!loginCheckPermission(USER::MGMT_CTS_DATA)) redirect("errors/401");
  $itemName="CTS Data";
  $urlPrefix="mgmt_cts_data";
  $object=new CTSData($OID,$CID);

  if (!$object->exists())
  $msg="$itemName not found!";
  else {
    transactionBegin();
    if ($object->delete() )
    {
      transactionCommit();
      $msg="$itemName deleted!";
    }
    else
    {
      TransactionRollback();
      $msg="$itemName delete failed!";
    }

  }
  redirect("$urlPrefix/manage",$msg);
}


text:
# Function definition for cubic ----##
# Parameters:   x (int)
#               y (int)
# Return:       result (int) - result of x^3 + x + y
#
def cubic(x, y):

    # Compute formula
    result = x ** 3 + x + y

    # Return result
    return result

##---- Function definition ends ##

## Main program code ##

# Enter two numbers from the user
n1 = int(input('Enter x: '))
n2 = int(input('Enter y: '))

# Call the cubic function with n1 and n2 as arguments
# and store the returned value in res.
res = cubic(n1, n2)

# Display the computed result
print('The result is:', res)


text:
<!DOCTYPE html>

  <meta charset="utf-8">
  <title>
    {% if page.title %}
      {{ page.title }} –
    {% endif %}
    {{ site.name }}
  </title>
  <meta name="author" content="{{ site.name }}" />
  <meta name="description" content="{{ site.description }}" />
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">

  <link rel="alternate" type="application/rss+xml" href="/atom.xml" />

  <link rel="stylesheet" href="/css/fontawesome.min.css" type="text/css" media="screen, projection" />
  <link rel="stylesheet" href="/css/base.css" type="text/css" media="screen, projection" />
  <link rel="stylesheet" href="/css/pygments.css" type="text/css" />
  <link media="only screen and (max-device-width: 480px)" href="/css/mobile.css" type="text/css" rel="stylesheet" />
  <link media="only screen and (device-width: 768px)" href="/css/mobile.css" type="text/css" rel="stylesheet" />
  <link href='http://fonts.googleapis.com/css?family=Yanone+Kaffeesatz' rel='stylesheet' type='text/css'>
  <link rel="apple-touch-icon" href="/apple-touch-icon.png" />

        {{ site.name|split:' '|first }}
        {{ site.name|split:' '|last }}

HOME

ABOUT ME

PUBLICATIONS

RESEARCH

PHOTOS

BLOG

CODES

LINKS

    {{ content }}


text:
package com.nick.love.myra;

import java.util.Arrays;
import java.util.List;
import java.util.function.Predicate;

public class TestFunctionInterface {

	public static void main(String[] args) {
		// 传入 Lambda 表达式
		TestMyraFunInterface.test(() -> { System.out.println(); });
		// 传入方法引用
		TestMyraFunInterface.test(System.out :: println);

		// 打印名字列表中包含  Myra 字符串的名字
		String[] names = {"aa", "Myra is a beautiful girl.", "I love Myra Ma.", "dd"};
		PrintNameWithMyra.print(Arrays.asList(names), name -> name.contains("Myra"));
	}

	static class TestMyraFunInterface {
		public static void test(MyraFunctionInterface object) {
			object.test2();
		}
	}

	static class PrintNameWithMyra {
		public static void print(List<String> names, Predicate<String> condition) {
			for (String name : names) {
				if (condition.test(name)) {
					System.out.println(name);
				}
			}
		}
	}
}


text:
class User < ActiveRecord::Base
  attr_accessible :email, :free_trial_end_at, :geo_country_code, :name, :sso_session, :surname, :company

  #============================================
  # Constants
  #============================================
  VALID_COUNTRIES = Country.all.map { |a| a[1] }

  #============================================
  # Validation rules
  #============================================
  validates :email, :presence => true
  validates :name, :presence => true
  validates :surname, :presence => true
  validates :geo_country_code, :presence => true, inclusion: { :in => VALID_COUNTRIES }

  #============================================
  # Callbacks
  #============================================
  before_create :generate_sso_session
  after_create :generate_uid

  #============================================
  # Associations
  #============================================
  has_many :group_user_rels
  has_many :groups, through: :group_user_rels

  # Return a uid that is unique across users and
  # groups
  def virtual_uid(group)
    return "#{self.uid}.#{group.uid}"
  end

  # Return an email that is unique across users and
  # groups
  def virtual_email(group)
    return "#{self.virtual_uid(group)}@mno-api-sandbox-mail.maestrano.com"
  end

  # Return the role of a user for a given group
  def role(group)
    rel = self.group_user_rels.find_by_group_id(group.id)
    return rel ? rel.role : nil
  end

  def generate_sso_session
    self.sso_session = "#{(('a'..'z').to_a + (0..9).to_a).shuffle.join}"
  end

  def generate_sso_session!
    self.generate_sso_session
    self.save
  end

  private
    # Intialize the UID and save the record
    def generate_uid
      if self.id && !self.uid
        self.uid = "usr-#{self.id}"
        User.update_all({uid:self.uid}, {id: self.id})
      end
      return true
    end
end


text:
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.

#nullable disable

using System;
using System.Collections.Generic;
using System.Composition;
using System.Threading;
using Microsoft.CodeAnalysis.CSharp.Extensions;
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Highlighting;
using Microsoft.CodeAnalysis.Host.Mef;
using Microsoft.CodeAnalysis.Text;

namespace Microsoft.CodeAnalysis.CSharp.KeywordHighlighting.KeywordHighlighters
{
    [ExportHighlighter(LanguageNames.CSharp), Shared]
    internal class ConditionalPreprocessorHighlighter : AbstractKeywordHighlighter<DirectiveTriviaSyntax>
    {
        [ImportingConstructor]
        [Obsolete(MefConstruction.ImportingConstructorMessage, error: true)]
        public ConditionalPreprocessorHighlighter()
        {
        }

        protected override void AddHighlights(
            DirectiveTriviaSyntax directive, List<TextSpan> highlights, CancellationToken cancellationToken)
        {
            var conditionals = directive.GetMatchingConditionalDirectives(cancellationToken);
            if (conditionals == null)
            {
                return;
            }

            foreach (var conditional in conditionals)
            {
                highlights.Add(TextSpan.FromBounds(
                    conditional.HashToken.SpanStart,
                    conditional.DirectiveNameToken.Span.End));
            }
        }
    }
}


text:
package org.motechproject.mHealthDataInterface.bean;

import com.google.gson.JsonElement;
import com.google.gson.JsonPrimitive;
import com.google.gson.JsonSerializationContext;
import com.google.gson.JsonSerializer;
import java.lang.reflect.Type;

/**
 * Custom class for role of a health workers
 */
public class Role {

    private String uuid;
    private String name;

    public String getUuid() {
        return uuid;
    }

    public void setUuid(String uuid) {
        this.uuid = uuid;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public static class RoleSerializer implements JsonSerializer<Role> {
        @Override
        public JsonElement serialize(Role src, Type typeOfSrc, JsonSerializationContext context) {
            return new JsonPrimitive(src.getUuid());
        }
    }
}


text:
SessionOff
==========

If you're old enough in Rails age, you should remember the times when sessions
where not (that) lazy loaded and one could have turned them off declaratively.

I really liked this explicit approach and sure started missing it ever since it
got redesigned. Now in theory it sounds great that if you do not touch the session
it won't be loaded, but in practice enforcing your code to not invoke the session
method (and thus not send a session cookie) for a (session-less) mobile client
while sharing the same code for "normal" (session-aware) clients, is just *hard*.
you need to come up with a session state management and even so it's non-trivial
to track down "bugs" where you access the session while not really wanting to.

How about we bring the love back and allow (once again) for a session to be off :

```ruby
session :off                     # turn session off for all actions
session :off, :only => :bar      # only for :bar action
session :off, :except => :bar    # except for :bar action
session :only => :foo,           # on for :foo when doing HTTPS
        :session_secure => true
session :off, :only => :foo,     # off for :foo, if :bar parameter present
        :if => Proc.new { |req| req.params[:bar].present? }
```

**NOTE:** Keep in mind that after installing the plugin `session` might be nil !
But only while using the `session` (instance) method in controllers, it does
leave the `request.session` as is. Accessing the `request.session` directly will
work (and load the session) no matter if the session is off. This is intentional
as the goal of the plugin is to provide session management for controller code
and not the whole middleware stack.
I also highly discourage against using `session` inside model classes, as it is a
lack of good design, after all session's just an abstracted request "extension".

If in a need to check for a "disabled" session state from a request use :

```ruby
request.session_options[:disabled]
```

If unhappy with what happens while the session is turned off for an action :

```ruby
class ApplicationController < ActionController::Base

  def disable_session
    super # sets @_session = false (disabled)
    send_mama_a_kiss # or whatever you want !
  end

end
```

Install
=======

    gem 'session_off'

or as a plain-old rails plugin :

    script/plugin install git://github.com/kares/session_off.git

Gem has been tested and should work with Rails **4.x/3.x** as well as **2.3**.

Example
=======

or how to be nice to robots :

```ruby
class RobotsController < ApplicationController

  # http://gurge.com/blog/2007/01/08/turn-off-rails-sessions-for-robots/
  ROBOTS = /\b(Baidu|Gigabot|Googlebot|libwww-perl|lwp-trivial|msnbot|SiteUptime|Slurp|WordPress|ZIBB|ZyBorg)\b/i

  # turn off sessions if this is a request from a robot
  session :off, :if => proc { |request| request.user_agent =~ ROBOTS }

  def greetings
    if session
      render :text => "SHALL WE PLAY A GAME ?"
    else
      render :text => "F*ck OFF, Stupid BOT !"
    end
  end

end
```

## Copyright

Copyright (c) 2014 [Karol Bucek](https://github.com/kares).
See LICENSE (http://www.apache.org/licenses/LICENSE-2.0) for details.


text:
(function(ns) {

  'use strict';

  ns.init = function(container, props) {
    return new ns.components.Canvas(container, props);
  };

  ns.initStepExecutor = function(){
    return new ns.StepExecutor();
  };

}(window.stepViz));