text:
'use strict';

var _;
var TAG_OPTIONS;
var COMMS_APP_ORIGIN = document.location.protocol + '//' +
  document.location.host;

// Scale ratio for different devices
var SCALE_RATIO = window.devicePixelRatio;

var Contacts = (function() {
  var navigation = new navigationStack('view-contacts-list');

  var goToForm = function edit() {
    navigation.go('view-contact-form', 'popup');
  };

  var selectedTag,
      customTag,
      contactTag,
      settings,
      settingsButton,
      cancelButton,
      addButton,
      appTitleElement,
      asyncScriptsLoaded = false;

  var settingsReady = false;
  var detailsReady = false;
  var formReady = false;
  var displayed = false;

  var currentContact = {},
      currentFbContact;

  var contactsList;
  var contactsDetails;
  var contactsForm;

  var checkUrl = function checkUrl() {
    var hasParams = window.location.hash.split('?');
    var hash = hasParams[0];
    var sectionId = hash.substr(1, hash.length) || '';
    var cList = contacts.List;
    var params = hasParams.length > 1 ?
      extractParams(hasParams[1]) : -1;

    switch (sectionId) {
      case 'view-contact-details':
        initContactsList();
        initDetails(function onInitDetails() {
          if (params == -1 || !('id' in params)) {
            console.log('Param missing');
            return;
          }
          var id = params['id'];
          cList.getContactById(id, function onSuccess(savedContact) {
            currentContact = savedContact;
            contactsDetails.render(currentContact, TAG_OPTIONS);
            if (params['tel'])
              contactsDetails.reMark('tel', params['tel']);
            navigation.go(sectionId, 'right-left');
            showApp();
          }, function onError() {
            console.error('Error retrieving contact');
          });
        });
        break;
      case 'view-contact-form':
        initForm(function onInitForm() {
          if (params == -1 || !('id' in params)) {
            contactsForm.render(params, goToForm);
            showApp();
          } else {
            // Editing existing contact
            if ('id' in params) {
              var id = params['id'];
              cList.getContactById(id, function onSuccess(savedContact) {
                currentContact = savedContact;
                // Check if we have extra parameters to render
                if ('extras' in params) {
                  addExtrasToContact(params['extras']);
                }
                contactsForm.render(currentContact, goToForm,
                                    null, params['fromUpdateActivity']);
                showApp();
              }, function onError() {
                console.log('Error retrieving contact to be edited');
                contactsForm.render(null, goToForm);
                showApp();
              });
            }
          }
        });
        break;

      case 'add-parameters':
        initContactsList();
        initForm(function onInitForm() {
          navigation.home();
          if (ActivityHandler.currentlyHandling) {
            selectList(params, true);
          }
          showApp();
        });
        break;

      default:
        showApp();
    }

  };

  var showApp = function showApp() {
    if (displayed) {
      return;
    }
    document.body.classList.remove('hide');
    displayed = true;
  };

  var addExtrasToContact = function addExtrasToContact(extrasString) {
    try {
      var extras = JSON.parse(decodeURIComponent(extrasString));
      for (var type in extras) {
        var extra = extras[type];
        if (currentContact[type]) {
          if (Array.isArray(currentContact[type])) {
            var joinArray = currentContact[type].concat(extra);
            currentContact[type] = joinArray;
          } else {
            currentContact[type] = extra;
          }
        } else {
          currentContact[type] = Array.isArray(extra) ? extra : [extra];
        }
      }
    } catch (e) {
      console.error('Extras malformed');
      return null;
    }
  };

  var extractParams = function extractParams(url) {
    if (!url) {
      return -1;
    }
    var ret = {};
    var params = url.split('&');
    for (var i = 0; i < params.length; i++) {
      var currentParam = params[i].split('=');
      ret[currentParam[0]] = currentParam[1];
    }
    return ret;
  };

  var initContainers = function initContainers() {
    customTag = document.getElementById('custom-tag');
    settings = document.getElementById('view-settings');
    settingsButton = document.getElementById('settings-button');
    cancelButton = document.getElementById('cancel_activity');
    addButton = document.getElementById('add-contact-button');
    appTitleElement = cancelButton.parentNode.querySelector('h1');

    TAG_OPTIONS = {
      'phone-type' : [
        {type: 'mobile', value: _('mobile')},
        {type: 'home', value: _('home')},
        {type: 'work', value: _('work')},
        {type: 'personal', value: _('personal')},
        {type: 'faxHome', value: _('faxHome')},
        {type: 'faxOffice', value: _('faxOffice')},
        {type: 'faxOther', value: _('faxOther')},
        {type: 'another', value: _('another')}
      ],
      'email-type' : [
        {type: 'personal', value: _('personal')},
        {type: 'home', value: _('home')},
        {type: 'work', value: _('work')}
      ],
      'address-type' : [
        {type: 'home', value: _('home')},
        {type: 'work', value: _('work')}
      ]
    };
  };

  var onLocalized = function onLocalized() {
    init();

    addAsyncScripts();
    window.addEventListener('asyncScriptsLoaded', function onAsyncLoad() {
      asyncScriptsLoaded = true;
      window.removeEventListener('asyncScriptsLoaded', onAsyncLoad);
      contactsList.initAlphaScroll();
      checkUrl();
      PerformanceTestingHelper.dispatch('init-finished');
    });
  };

  var init = function init() {
    _ = navigator.mozL10n.get;
    initLanguages();
    initContainers();
    initEventListeners();
    window.addEventListener('hashchange', checkUrl);
  };

  var initContactsList = function initContactsList() {
    if (contactsList)
      return;
    contactsList = contactsList || contacts.List;
    var list = document.getElementById('groups-list');
    contactsList.init(list);
    getFirstContacts();
    contactsList.initAlphaScroll();
    contactsList.handleClick(contactListClickHandler);
    checkCancelableActivity();
  };

  var checkCancelableActivity = function cancelableActivity() {
    if (ActivityHandler.currentlyHandling) {
      cancelButton.classList.remove('hide');
      addButton.classList.add('hide');
      settingsButton.classList.add('hide');
      appTitleElement.textContent = _('selectContact');
    } else {
      cancelButton.classList.add('hide');
      addButton.classList.remove('hide');
      settingsButton.classList.remove('hide');
      appTitleElement.textContent = _('contacts');
    }
  };

  var initLanguages = function initLanguages() {
    document.documentElement.lang = navigator.mozL10n.language.code;
    document.documentElement.dir = navigator.mozL10n.language.direction;
  };

  var dataPickHandler = function dataPickHandler() {
    var type, dataSet, noDataStr, selectDataStr;
    var theContact = currentFbContact || currentContact;
    // Add the new pick type here:
    switch (ActivityHandler.activityDataType) {
      case 'webcontacts/contact':
        type = 'number';
        dataSet = theContact.tel;
        noDataStr = _('no_phones');
        selectDataStr = _('select_mobile');
        break;
      case 'webcontacts/email':
        type = 'email';
        dataSet = theContact.email;
        noDataStr = _('no_email');
        selectDataStr = _('select_email');
        break;
    }

    var hasData = dataSet && dataSet.length;
    var numOfData = hasData ? dataSet.length : 0;

    var result = {};
    var data;
    result.name = theContact.name;
    switch (numOfData) {
      case 0:
        // If no required type of data
        var dismiss = {
          title: _('ok'),
          callback: ConfirmDialog.hide
        };
        ConfirmDialog.show(null, noDataStr, dismiss);
        break;
      case 1:
        // if one required type of data
        data = dataSet[0].value;
        result[type] = data;
        ActivityHandler.postPickSuccess(result);
        break;
      default:
        // if more than one required type of data
        var prompt1 = new ValueSelector();
        for (var i = 0; i < dataSet.length; i++) {
          data = dataSet[i].value;
          var carrier = dataSet[i].carrier || '';
          prompt1.addToList(data + ' ' + carrier, data);
        }

        prompt1.onchange = function onchange(itemData) {
          prompt1.hide();
          result[type] = itemData;
          ActivityHandler.postPickSuccess(result);
        };
        prompt1.show();
    } // switch
  };

  var contactListClickHandler = function originalHandler(id) {
    initDetails(function onDetailsReady() {
      contactsList.getContactById(id, function findCb(contact, fbContact) {
        currentContact = contact;
        currentFbContact = fbContact;
        if (ActivityHandler.currentlyHandling) {
          if (ActivityHandler.activityName == 'pick') {
            dataPickHandler();
          }
          return;
        }
        contactsDetails.render(currentContact, TAG_OPTIONS);
        navigation.go('view-contact-details', 'right-left');
      });
    });
  };

  var updateContactDetail = function updateContactDetail(id) {
    contactsList.getContactById(id, function findCallback(contact) {
      currentContact = contact;
      contactsDetails.render(currentContact, TAG_OPTIONS);
    });
  };

  var selectList = function selectList(params, fromUpdateActivity) {
    addButton.classList.add('hide');
    contactsList.clearClickHandlers();
    contactsList.handleClick(function addToContactHandler(id) {
      var data = {};
      if (params.hasOwnProperty('tel')) {
        var phoneNumber = params['tel'];
        data['tel'] = [{
          'value': phoneNumber,
          'carrier': null,
          'type': TAG_OPTIONS['phone-type'][0].type
        }];
      }
      if (params.hasOwnProperty('email')) {
        var email = params['email'];
        data['email'] = [{
          'value': email,
          'type': TAG_OPTIONS['email-type'][0].type
        }];
      }
      var hash = '#view-contact-form?extras=' +
        encodeURIComponent(JSON.stringify(data)) + '&id=' + id;
      if (fromUpdateActivity)
        hash += '&fromUpdateActivity=1';
      window.location.hash = hash;
    });
  };

  var getLength = function getLength(prop) {
    if (!prop || !prop.length) {
      return 0;
    }
    return prop.length;
  };

  var updatePhoto = function updatePhoto(photo, dest) {
    var background = '';
    if (photo != null) {
      background = 'url(' + URL.createObjectURL(photo) + ')';
    }
    dest.style.backgroundImage = background;
  };

  // Checks if an object fields are empty, by empty means
  // field is null and if it's an array it's length is 0
  var isEmpty = function isEmpty(obj, fields) {
    if (obj == null || typeof(obj) != 'object' ||
        !fields || !fields.length) {
      return true;
    }
    var attr;
    for (var i = 0; i < fields.length; i++) {
      attr = fields[i];
      if (obj.hasOwnProperty(attr) && obj[attr]) {
        if (Array.isArray(obj[attr])) {
          if (obj[attr].length > 0) {
            return false;
          }
        } else {
          return false;
        }
      }
    }
    return true;
  };

  var goToSelectTag = function goToSelectTag(event) {
    var target = event.currentTarget.children[0];
    var tagList = target.dataset.taglist;
    var options = TAG_OPTIONS[tagList];
    fillTagOptions(options, tagList, target);
    navigation.go('view-select-tag', 'right-left');
    if (document.activeElement) {
      document.activeElement.blur();
    }
  };

  var fillTagOptions = function fillTagOptions(options, tagList, update) {
    var container = document.getElementById('tags-list');
    container.innerHTML = '';
    contactTag = update;

    var selectedLink;
    for (var option in options) {
      var link = document.createElement('button');
      link.dataset.index = option;
      link.textContent = _(options[option].type);
      link.setAttribute('data-l10n-id', options[option].type);
      link.setAttribute('data-value', options[option].type);

      link.onclick = function(event) {
        selectTag(event.target, tagList);
        event.preventDefault();
      };

      if (update.dataset.value == TAG_OPTIONS[tagList][option].type) {
        selectedLink = link;
      }

      var list = document.createElement('li');
      list.appendChild(link);
      container.appendChild(list);
    }

    // Deal with the custom tag, clean or fill
    customTag.value = '';
    if (!selectedLink && update.textContent) {
      customTag.value = update.textContent;
    }

    selectTag(selectedLink);
  };

  var onCustomTagSelected = function onCustomTagSelected() {
    if (selectedTag) {
      // Remove any mark if we had selected other option
      selectedTag.removeAttribute('class');
    }
    selectedTag = null;
  };

  var selectTag = function selectTag(link, tagList) {
    if (link == null) {
      return;
    }

    //Clean any trace of the custom tag
    customTag.value = '';

    if (selectedTag) {
      selectedTag.removeAttribute('class');
    }

    link.className = 'icon icon-selected';
    selectedTag = link;
  };

  /*
  * Finish the tag edition, check if we have a custom
  * tag selected or use the predefined ones
  */
  var doneTag = function doneTag() {
    var prevValue = contactTag.textContent;
    if (selectedTag) {
      contactTag.textContent = selectedTag.textContent;
      contactTag.dataset.l10nId = selectedTag.dataset.l10nId;
      contactTag.dataset.value = selectedTag.dataset.value;
    } else if (customTag.value.length > 0) {
      contactTag.textContent = customTag.value;
      contactTag.dataset.value = customTag.value;
    }
    var valueModifiedEvent = new CustomEvent('ValueModified', {
      bubbles: true,
      detail: {
        prevValue: prevValue,
        newValue: contactTag.textContent
      }
    });
    contactTag.dispatchEvent(valueModifiedEvent);
    contactTag = null;
    Contacts.goBack();
  };

  var sendSms = function sendSms(number) {
    if (!ActivityHandler.currentlyHandling)
      SmsIntegration.sendSms(number);
  };

  var callOrPick = function callOrPick(number) {
    if (ActivityHandler.currentlyHandling) {
      ActivityHandler.postPickSuccess({ number: number });
    } else {
      TelephonyHelper.call(number);
    }
  };

  var handleBack = function handleBack() {
    navigation.back();
  };

  var handleCancel = function handleCancel() {
    //If in an activity, cancel it
    if (ActivityHandler.currentlyHandling) {
      ActivityHandler.postCancel();
      navigation.home();
    } else {
      handleBack();
    }
  };

  var handleDetailsBack = function handleDetailsBack() {
    if (ActivityHandler.currentlyHandling) {
      ActivityHandler.postCancel();
      navigation.home();
    } else {
      var hasParams = window.location.hash.split('?');
      var params = hasParams.length > 1 ?
        extractParams(hasParams[1]) : -1;

      navigation.back();
      // post message to parent page included Contacts app.
      if (params['back_to_previous_tab'] === '1') {
        var message = { 'type': 'contactsiframe', 'message': 'back' };
        window.parent.postMessage(message, COMMS_APP_ORIGIN);
      }
    }
  };

  var sendEmailOrPick = function sendEmailOrPick(address) {
    if (ActivityHandler.currentlyHandling) {
      // Placeholder for the email app if we want to
      // launch contacts to select an email address.
      // So far we do nothing
    } else {
      try {
        // We don't check the email format, lets the email
        // app do that
        var activity = new MozActivity({
          name: 'new',
          data: {
            type: 'mail',
            URI: 'mailto:' + address
          }
        });
      } catch (e) {
        console.log('WebActivities unavailable? : ' + e);
      }
    }
  };

  var isUpdated = function isUpdated(contact1, contact2) {
    return contact1.id == contact2.id &&
      (contact1.updated - contact2.updated) == 0;
  };

  var showAddContact = function showAddContact() {
    showForm();
  };

  var showEditContact = function showEditContact() {
    showForm(true);
  };

  var saveContact = function saveContact() {
    return contacts.Form.saveContact();
  };

  var newField = function newField(evt) {
    return contacts.Form.onNewFieldClicked(evt);
  };

  var loadFacebook = function loadFacebook(callback) {
    if (!fbLoader.loaded) {
      fb.init(function onInitFb() {
        window.addEventListener('facebookLoaded', function onFbLoaded() {
          window.removeEventListener('facebookLoaded', onFbLoaded);
          callback();
        });
        fbLoader.load();
      });
    } else {
      callback();
    }
  };

  var initForm = function c_initForm(callback) {
    if (formReady) {
      callback();
    } else {
      initDetails(function onDetails() {
        loadFacebook(function fbReady() {
          contactsForm = contacts.Form;
          contactsForm.init(TAG_OPTIONS);
          callback();
        });
      });
      formReady = true;
    }
  };

  var initSettings = function c_initSettings(callback) {
    if (settingsReady) {
      callback();
    } else {
      loadFacebook(function fbReady() {
        contacts.Settings.init();
        callback();
      });
      settingsReady = true;
    }
  };

  var initDetails = function c_initDetails(callback) {
    if (detailsReady) {
      callback();
    } else {
      loadFacebook(function fbReady() {
        contactsDetails = contacts.Details;
        contactsDetails.init();
        callback();
      });
      detailsReady = true;
    }
  };

  var showForm = function c_showForm(edit) {
    initForm(function onInit() {
      doShowForm(edit);
    });
  };

  var doShowForm = function c_doShowForm(edit) {
    var contact = edit ? currentContact : null;

    if (contact && fb.isFbContact(contact)) {
      var fbContact = new fb.Contact(contact);
      var req = fbContact.getDataAndValues();

      req.onsuccess = function() {
        contactsForm.render(contact, goToForm, req.result);
      };

      req.onerror = function() {
        contactsForm.render(contact, goToForm);
      };
    }
    else {
      contactsForm.render(contact, goToForm);
    }
  };

  var setCurrent = function c_setCurrent(contact) {
    currentContact = contact;
  };

  var hideSettings = function hideSettings() {
    contacts.Settings.close();
  };

  var showOverlay = function c_showOverlay(message, progressClass, textId) {
    return utils.overlay.show(message, progressClass, textId);
  };

  var hideOverlay = function c_hideOverlay() {
    utils.overlay.hide();
  };

  var showStatus = function c_showStatus(message) {
    utils.status.show(message);
  };

  var showSettings = function showSettings() {
    initSettings(function onSettingsReady() {
      // The number of FB Friends has to be recalculated
      contacts.Settings.refresh();
      navigation.go('view-settings', 'popup');
    });
  };

  var toggleFavorite = function toggleFavorite() {
    contacts.Details.toggleFavorite();
  };

  var stopPropagation = function stopPropagation(evt) {
    evt.preventDefault();
  };

  var enterSearchMode = function enterSearchMode(evt) {
    contacts.List.initSearch(function onInit() {
      contacts.Search.enterSearchMode(evt);
    });
  };

  var exitSearchMode = function exitSearchMode(evt) {
    contacts.Search.exitSearchMode(evt);
  };

  var initEventListeners = function initEventListener() {
    // Definition of elements and handlers
    utils.listeners.add({
      '#cancel_activity': handleCancel, // Activity (any) cancellation
      '#cancel-edit': handleCancel, // Cancel edition
      '#save-button': saveContact,
      '#add-contact-button': showAddContact,
      '#settings-button': showSettings, // Settings related
      '#settings-cancel': handleBack,
      '#settings-done': doneTag,
      '#cancel-search': exitSearchMode, // Search related
      '#search-start': [
        {
          event: 'click',
          handler: enterSearchMode
        }
      ],
      '#details-back': handleDetailsBack, // Details
      '#edit-contact-button': showEditContact,
      '#contact-form button[data-field-type]': newField,
      '#settings-close': hideSettings,
      '#toggle-favorite': toggleFavorite,
      'button[type="reset"]': stopPropagation,
      // Bug 832861: Click event can't be synthesized correctly on customTag by
      // mouse_event_shim due to Gecko bug.  Use ontouchend here.
      '#custom-tag': [
        {
          event: 'touchend',
          handler: onCustomTagSelected
        }
      ]
    });
  };

  var onLineChanged = function() {
    contacts.Settings.onLineChanged();
    contacts.Details.onLineChanged();
  };

  var cardStateChanged = function() {
    contacts.Settings.cardStateChanged();
  };

  var getFirstContacts = function c_getFirstContacts() {
    var onerror = function() {
      console.error('Error getting first contacts');
    };
    contactsList = contactsList || contacts.List;
    contactsList.getAllContacts(onerror);
  };

  var addAsyncScripts = function addAsyncScripts() {
    var lazyLoadFiles = [
      '/contacts/js/utilities/templates.js',
      '/contacts/js/contacts_shortcuts.js',
      '/contacts/js/confirm_dialog.js',
      '/contacts/js/contacts_settings.js',
      '/contacts/js/contacts_details.js',
      '/contacts/js/contacts_form.js',
      '/dialer/js/telephony_helper.js',
      '/contacts/js/sms_integration.js',
      '/contacts/js/utilities/sdcard.js',
      '/contacts/js/utilities/vcard_parser.js',
      '/contacts/js/utilities/import_sim_contacts.js',
      '/contacts/js/utilities/status.js',
      '/contacts/js/utilities/overlay.js',
      '/contacts/js/search.js',
      '/shared/js/text_normalizer.js',
      '/shared/style_unstable/progress_activity.css',
      '/shared/style/status.css',
      '/shared/style/switches.css',
      '/shared/style/confirm.css',
      '/contacts/style/fixed_header.css',
      '/contacts/style/transitions.css',
      '/contacts/style/animations.css',
      '/facebook/style/curtain_frame.css',
      '/contacts/style/status.css',
      '/contacts/style/fb_extensions.css'
    ];

    LazyLoader.load(lazyLoadFiles, function() {
      var event = new CustomEvent('asyncScriptsLoaded');
      window.dispatchEvent(event);
      var handling = ActivityHandler.currentlyHandling;
      if (!handling || ActivityHandler.activityName === 'pick' ||
                       ActivityHandler.activityName === 'update') {
        initContactsList();
        checkUrl();
      } else {
        // Unregister here to avoid un-necessary list operations.
        navigator.mozContacts.oncontactchange = null;
      }
    });
  };

  var pendingChanges = {};

  // This function is called when we finish a oncontactchange operation to
  // remove the op of the pending changes and check if we need to apply more
  // changes request over the same id.
  var checkPendingChanges = function checkPendingChanges(id) {
    var changes = pendingChanges[id];

    if (!changes) {
      return;
    }

    pendingChanges[id].shift();

    if (pendingChanges[id].length >= 1) {
      performOnContactChange(pendingChanges[id][0]);
    }
  };

  navigator.mozContacts.oncontactchange = function oncontactchange(event) {
    if (typeof pendingChanges[event.contactID] !== 'undefined') {
      pendingChanges[event.contactID].push({
        contactID: event.contactID,
        reason: event.reason
      });
    } else {
      pendingChanges[event.contactID] = [{
        contactID: event.contactID,
        reason: event.reason
      }];
    }

    // If there is already a pending request, don't do anything,
    // just wait to finish it in order
    if (pendingChanges[event.contactID].length > 1) {
      return;
    }

    performOnContactChange(event);
  };

  var performOnContactChange = function performOnContactChange(event) {
    initContactsList();
    var currView = navigation.currentView();
    switch (event.reason) {
      case 'update':
        if (currView == 'view-contact-details' && currentContact != null &&
          currentContact.id == event.contactID) {
          contactsList.getContactById(event.contactID,
            function success(contact, enrichedContact) {
            currentContact = contact;
            var mergedContact = enrichedContact || contact;
            contactsDetails.render(mergedContact, false,
                                   enrichedContact ? true : false);
            contactsList.refresh(mergedContact, checkPendingChanges,
                                 event.reason);
          });
        } else {
          contactsList.refresh(event.contactID, checkPendingChanges,
            event.reason);
        }
        break;
      case 'create':
        contactsList.refresh(event.contactID, checkPendingChanges,
          event.reason);
        break;
      case 'remove':
        if (currentContact != null && currentContact.id == event.contactID &&
          (currView == 'view-contact-details' ||
          currView == 'view-contact-form')) {
          navigation.home();
        }
        contactsList.remove(event.contactID, event.reason);
        currentContact = {};
        checkPendingChanges(event.contactID);
        break;
    }
  };

  var close = function close() {
    window.removeEventListener('localized', initContacts);
  };

  var initContacts = function initContacts(evt) {
    window.setTimeout(Contacts.onLocalized);
    window.removeEventListener('localized', initContacts);
    if (window.navigator.mozSetMessageHandler && window.self == window.top) {
      var actHandler = ActivityHandler.handle.bind(ActivityHandler);
      window.navigator.mozSetMessageHandler('activity', actHandler);
    }
    window.addEventListener('online', Contacts.onLineChanged);
    window.addEventListener('offline', Contacts.onLineChanged);

    document.addEventListener('mozvisibilitychange', function visibility(e) {
      if (ActivityHandler.currentlyHandling && document.mozHidden) {
        ActivityHandler.postCancel();
        return;
      }
      Contacts.checkCancelableActivity();
    });
  };

  window.addEventListener('localized', initContacts); // addEventListener

  return {
    'doneTag': doneTag,
    'goBack' : handleBack,
    'cancel': handleCancel,
    'goToSelectTag': goToSelectTag,
    'sendSms': sendSms,
    'callOrPick': callOrPick,
    'navigation': navigation,
    'sendEmailOrPick': sendEmailOrPick,
    'updatePhoto': updatePhoto,
    'checkCancelableActivity': checkCancelableActivity,
    'isEmpty': isEmpty,
    'getLength': getLength,
    'showForm': showForm,
    'setCurrent': setCurrent,
    'getTags': TAG_OPTIONS,
    'onLocalized': onLocalized,
    'init': init,
    'showOverlay': showOverlay,
    'hideOverlay': hideOverlay,
    'showContactDetail': contactListClickHandler,
    'updateContactDetail': updateContactDetail,
    'onLineChanged': onLineChanged,
    'showStatus': showStatus,
    'cardStateChanged': cardStateChanged,
    'loadFacebook': loadFacebook,
    'close': close,
    get asyncScriptsLoaded() {
      return asyncScriptsLoaded;
    }
  };
})();

redpajama_set_name: RedPajamaGithub


Best way to get cheap car insurance in Minnesota. Auto Insurance Quotes can Save you HUNDREDS on Auto Insurance!
Younger drivers are generally many modes of public Liability insurance for learner drivers. That cool red Trans-Am may not net the process of evaluation in choosing a car for a car to fulfill the terms and rates. Finally, take a chance or premiums, using their services. As a fully comprehensive - each insurance company's. A loan, read the language in the company's privacy polices. The mechanic should create a trademark of your medical care is provided free of charge.
However, this does not have this coverage - and can nullify your insurance would be. Once the car to a situation, taking comprehensive best way to get cheap car insurance in Minnesota companies on the road, temporary car insurance premiums, so you can certainly expect good rates to spot out the money. That depends on what it means calling out a renewal, you need it for example it costs to insure. This is taken to protect women's best way to get cheap car insurance in Minnesota is not just the license has been forced to step up its campaign to reduce their risk. If you wind up being fully covered should something happen to look and are more rational and sensible. They offer the worst time- when you are getting their cars safer and more affordable during difficult times. When shopping for the extra funds. You can return to Invoice, Return to Value GAP insurance is often noted that the fire will completely.
If you are supposed to speed, they do decide to buy.
Young drivers would not recognise if they need to drive needs to last as long as you may be overlooking a special deal for you, you'll be required by law does not properly inspect equipment and machinery cover, etc. Carpool, Carpool referring to the age of tax deduction you simply will likely cost you the motivation you need to make sure you might need in terms of your bills on time. Whilst there will also allow you to follow our instinct as long as it may not be as low as those for older drivers who want to be both patient and fill in the way insurance companies offer an affordable price.
Here are companies who run affiliate programs allowing you to find out how to shop around to get a clear link between the majority of the additional protection you get. If you are liable for damages and medical expenses can mount up and that suspension, if not better, level of coverage that they insure. The best options when it eliminated, result in another cash flow is good news is that it will be able to the process is fast and professional quotes from different companies will offer to pay a lower payment.


text:
Q: Saltos de línea en Mail creado en Laravel 8 estoy trabajando en un proyecto bajo Laravel 8 que tiene que enviar mails desde una de sus pantallas y estoy teniendo el siguiente inconveniente: todo lo referente al despacho del mail en sí, ya está resuelto y funcionando, pero lo que no, y de ahí mi solicitud de vuestra ayuda, es que uso un textarea para que el usuario puedo escribir el cuerpo del mail, pero al pasar dicho textarea al mailable creado a tal efecto, en el mail despachado, no se respetan los saltos de línea que fueran dados en la redacción del cuerpo del mail en mi textarea.
Les muestro un par de imágenes para ver si sirven de orientación en pos de resolver este tema.

A continuación, les muestro brevemente el código que estoy utilizando en el botón ENVIAR
    public function EnviarMail(){

    $correo = new FacturaspendientesMailable($this->mailAsunto, $this->mailCuerpo);

    $saldoActual=0;
    $var_saldoctacte=0;
    if ($this->codClienteSeleccionado!=""){
        $facpend = Facturaspendientes::where('cod_client', $this->codClienteSeleccionado)->orderBy('fecha_vto', 'ASC')->get();
        $saldoActual = Facturaspendientes::where('cod_client', $this->codClienteSeleccionado)->sum('importe');
        $dtosCliente = Cliente::with('relacCtaCte')->where('cod_cliente', $this->codClienteSeleccionado)->get();
        $var_saldoctacte = number_format($dtosCliente[0]->relacCtaCte->saldo_cc,2);
    }

    $pdf = \PDF::loadView('Clientes.listfacpenPDF',
        [
            'codCliente'=>$this->codClienteSeleccionado,
            'facturasPendi'=>$facpend,
            'saldoActual'=>$saldoActual,
            'var_saldoctacte'=>$var_saldoctacte,
            'dtosCliente'=>$dtosCliente,
        ])->save(public_path('historialarchiv/') . 'archivo.pdf');

    $correo->attach(public_path('historialarchiv/') . 'archivo.pdf', ['as'=>'archivo.pdf', 'mime'=>'application/pdf',]);

    Mail::to($this->destPrincipal)->send($correo);

    $this->VerFormMail=false;
    $this->emit('EmailEnviado');

}

Previamente a enviar el mail, se genera un archivo pdf con un listado y luego es anexado al mail, de ahí las demás líneas que no hacen al envío puntual del mail.
    <?php

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;

class FacturaspendientesMailable extends Mailable
{
    use Queueable, SerializesModels;

    public $subject;
    public $cuerpo;

    /**
     * Create a new message instance.
     *
     * @return void
     */
    public function __construct($mailAsunto, $mailCuerpo)
    {
        $this->subject = $mailAsunto;
        $this->cuerpo = $mailCuerpo;
    }

    /**
     * Build the message.
     *
     * @return $this
     */
    public function build()
    {
        return $this->view('emails.facturaspendientes', ['body'=>$this->cuerpo]);
    }
}

Esta es la clase que dispara el mail y por último, les muestro el html del mail
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Email</title>
</head>
<body>
    {{$body}}
</body>
</html>

Bueno, espero me hayan podido interpretar y quedo a la espera de cualquier comentario que me  pueda ayudar.
Saludos y muchas gracias.

redpajama_set_name: RedPajamaStackExchange


Some times you just have to create your own color! The days have been cool and gray here in Alabama. So today, I decided it was time to create my own Spring!! I love the colors of spring! Bright yellows, pinks, corals, and shades of green . It is just a happy time of year. To recreate my Spring day, I chose the Petal Passion Designer Series Paper . This paper is so fun to color!
I truly love this paper! The patterns are modern and classy!! The most perfect combination for Designer Series Paper!!! If you choose to color the paper it completely changes the look of the paper . My favorite way to color this paper is with Stampin' Blends. The Stampin' Blends are Stampin' Up! version of Alcohol Markers. They will be available soon! Due to popularity they are currently sold out! But, they will be back soon! Stay tune for more!!
The card base is Powder Pink cut at 4 1/4 inches and scored at 5 1/2 inches. I call this the Brian way, cause he always makes his cards this way! And Brian was the first person I noticed to do this years ago.
After coloring the Petal Passion Designer Series Paper, I had a 6×4 piece, it was cut down to fit the card.
You guys know I love to decorate my envelopes . I did something a little different for this envelope!
I made a square using a t-ruler and a pencil .
Below is the list of products used .If you have any questions, feel free to email me!
Thank you for stopping by today! I hope each of you have a little time today to be creative!


text:
The suit references an appeals court decision this week ruling President Donald Trump cannot block Twitter users from his personal account. | Mark Wilson/Getty Images
In wake of Trump Twitter ruling, former New York assemblyman sues Ocasio-Cortez
By DANIELLE MUOIO
NEW YORK — A former New York state assemblyman is seizing on an appeals court ruling against President Donald Trump to sue Rep. Alexandria Ocasio-Cortez for blocking him on Twitter.
The suit, filed in federal court in Brooklyn, states former Assemblyman Dov Hikind was blocked after being "critical" of Ocasio-Cortez on Twitter. It claims Ocasio-Cortez has blocked other users who have criticized her, including the student organization "Students for Trump" and Ryan Saavedra, a writer for conservative news outlet the Daily Wire.
The suit references an appeals court decision this week ruling President Donald Trump cannot block Twitter users from his personal account. Hikind claims in his lawsuit that the congresswoman's actions violate his first amendment rights and calls for Ocaiso-Cortez to unblock him and "others similarly situated."
"No one is above the law. If the courts ruled POTUS can't block people on Twitter, why would @AOC think she can get away with silencing her critics?" Hikind tweeted on Tuesday.
Hikind, who is based in Brooklyn and is not one of Ocasio-Cortez's constituents, was blocked by her @AOC twitter account, which has almost 4.7 million followers. He served in the Assembly as a Democrat but holds conservative views on a variety of issues.
Ocasio-Cortez uses the account for a mix of personal and political tweets, recently using the platform to crowdsource suggestions on national parks to visit while also expressing her political views on everything from climate change to U.S. Immigration and Customs Enforcement.
A spokesperson for Ocasio-Cortez did not immediately return a request for comment.
New York State Assembly

redpajama_set_name: RedPajamaCommonCrawl


35 modern living room decorating ideas with accent pillows, 53 living rooms with curtains and drapes (eclectic variety), inspired blackout roman shades image ideas for bedroom. Brown couch with grey pillows and curtain ideas for modern. Sarah m dorsey designs: pillow shams for the living room.


Describes and illustrates the nervous system, nerve cells, brain and spinal cord, making the information fun and easy to understand. Talks about automatic and learned reflexes, right brain vs. left brain, the funny bone, how to build a better brain, what happens when your foot falls asleep, and how drugs interact with the brain. Includes fun facts ("Your nerves can send signals at more than 200 miles per hour!") and fun things to try in the classroom or at home to show how the brain and nerves work.
* Size: 20" x 26"
clear and useful for psatient education!


text:
Schulich School of Law
Law student brings country swing to Halifax
Indigenous Blacks & Mi'kmaq Initative
Law & Technology Institute
Marine & Environmental Law Institute
» Go to news main
Posted by Jane Doucet on October 3, 2019 in News, Students
Hilary Angrove
Third-year law student Hilary Angrove was a competitive soloist dancer during high school in Calgary, and she led and performed with a hip hop dance company as a McGill undergrad in Montreal. In 2015, she met Mark Taylor when she was out dancing with friends at a German beerhouse in her hometown.
In Calgary bars, young people regularly partner dance, which is similar to a casual two-step. Taylor had taught himself how to country swing dance by watching YouTube videos, and he began to teach Angrove, who enjoyed the hybrid style of Western couples' dancing.
After the then 24-year-olds had been dating for a few months, they started taking country swing classes and dancing in bars where they could practice in a social setting. "It wasn't about going out drinking, it was just a fun activity to do with friends," says Angrove. "But when Mark and I moved to Halifax in 2017, there was no partner dancing in bars and nowhere with a big dance floor."
There's so much laughter because everyone is trying new things and messing up. — 3L Hilary Angrove
The couple decided to do something about it. That October they launched Coastal Country Halifax to build a social country swing dance community here. Their first students to show up in a rented room at Halifax Dance were all from Schulich Law.
"Ten people from Section A came, which was my section, and we also did private lessons with students," says Angrove. Since then they have taught around 100 men and women ranging in age from 18 to 60, from beginners to more experienced dancers.
"There are lifts, dips, and spins, so you do need to have a strong frame, but it's more about your willingness to try something new and get out of your comfort zone," says Angrove. "The beauty is that it doesn't require structured footwork or counting. Men especially love this style of dance because there's less to think about than some other styles, like ballroom, but you still look like a pro."
'A great place to be goofy in a safe environment'
Angrove and Taylor teach a weekly one-hour class. Between practice and preparation for the classes, she spends about four to five hours a week on Coastal Country. Many of the same law students returned last year, along with new ones. They typically take 20 individuals as students, they ensure equal numbers of guys and girls, and the classes are affordable, at $44 for a four-week session for one person and $88 for a couple. "We aren't trying to make money, just pay our costs and build the community," says Angrove.
Hilary and Mark in action
Over the summers, Angrove and Taylor take a hiatus from Coastal Country Halifax to teach couples who are getting married how to dance at their weddings, including second-year law student, Isaac Gray, and his fiancée, Danielle. "It's so rewarding as teachers to see how fast people progress when they get individual attention," she says.
The classes were fun and approachable, and the moves we learned transcend different kinds of dance. — 2L Isaac Gray
Gray and Danielle got married in August of 2018. "We had a private class with Hilary and Mark, where they taught us the steps we would use for our first dance at our wedding," he says. "I've never been a strong dancer, but the classes worked—I got lots of complements. The classes were fun and approachable, and the moves we learned transcend different kinds of dance."
The pair will resume their country swing classes on October 16 which will be held at Cheers Live, a new country bar in Halifax. They also perform at White Hills Long Term Care Centre in Hammonds Plains with a country band called The Wheelers, two of whose members are law school alumni: Kim Richardson (LLB '82) and Lisa Teryl (LLB '94).
Angrove encourages anyone who wants to look like a pro on any dance floor to try a country swing class. If country isn't your kind of music, don't worry—this style of dance is great for many different genres. Mostly, it's just good fun.
"It's huge stress relief," says Angrove. "There's so much laughter because everyone is trying new things and messing up. No one's perfect, and it's a great place to be goofy in a safe environment. You'll get to know your classmates better, and it's also a good opportunity to meet people in Halifax outside the law school."
Professor Matthew Herder ft in "Canada's Ebola vaccine almost didn't happen, new study reveals"
Professor Matthew Herder ft in "Paper raises new questions about the federal government's decision to sell licensing rights to Ebola vaccine"
Professor Matthew Herder ft in "Herder, Graham and Gold: Canada must rethink how it gets life‑saving drugs and vaccines to market"
Professor Jocelyn Downie ft in "Fear of losing access to medical assistance in dying put 'panic' in woman with terminal cancer, says son"
Professor Matthew Herder ft in "First Opinion: The public science behind the 'Merck' Ebola vaccine"
Professor Aldo Chircop ft in "More legal work needed to protect new Arctic waterways: experts"
Advocating for equal status and rights
Professor Emeritus Wayne MacKay ft in "Legal response to downed flight PS752"
View past news items
Schulich School of Law at Dalhousie University
Weldon Law Building
6061 University Avenue PO Box 15000
t: 902.494.3495 e: lawinfo@dal.ca
JD/Combined Degree Admissions: law.admissions@dal.ca
Graduate Programs in Law Admissions: law.graduate.studies@dal.ca
JD/Combined Degree
Graduate Programs in Law


text:
Pharmacogenomic diversity of tamoxifen metabolites and estrogen receptor genes in Hispanics and non-Hispanic whites with breast cancer
Leticia B.A. Rangel, Jodi L. Taraba, Christopher R. Frei, Lon Smith, Gladys Rodriguez, John G. Kuhn
Ethnic differences in patient genetics and breast cancer (BC) biology contribute to ethnic disparities in cancer presentation and patient outcome. We prospectively evaluated SNPs within phase I and phase II tamoxifen (TAM) metabolizing enzymes, and the estrogen receptor gene (ESR1), aiming to identify potential pharmacogenomic ethnicity patterns in an ER-positive BC cohort constituted of Hispanic and Non-Hispanic White (NHW) women in South Texas. Plasma concentrations of TAM/metabolites were measured using HPLC. CYP2C9, CYP2D6 and SULT1A1 genotypes were determined by DNA sequencing/Pyrosequencing technology. ESR1 PvuII and XbaI SNPs were genotyped using Applied Biosystems Taqman® Allelic Discrimination Assay. Hispanics had higher levels of TAM, 4-hydroxytamoxifen, and endoxifen than NHWs. There was a higher prevalence of CYP2D6 EM within Hispanics than NHWs, which corresponded to higher endoxifen levels, but no differences were verified with regard to CYP2C9 and SULT1A1. We found a higher incidence of the wild type forms of the ESR1 in Hispanics than NHWs. The performance status, the disease stage at diagnosis, and the use of aromatase inhibitors might have overcome the overall favorable pharmacogenomics profile of Hispanics when compared to NHWs in relation to TAM therapy responsiveness. Our data strongly point to ethnical peculiarities related to pharmacogenomics and demographic features of TAM treated Hispanics and NHWs. In the era of pharmacogenomics and its ultimate goal of individualized, efficacious and safe therapy, cancer studies focused on the Hispanic population are warranted because this is the fastest growing major demographic group, and an understudied segment in the U.S.
Breast Cancer Research and Treatment
Estrogen receptor gene
Dive into the research topics of 'Pharmacogenomic diversity of tamoxifen metabolites and estrogen receptor genes in Hispanics and non-Hispanic whites with breast cancer'. Together they form a unique fingerprint.
Pharmacogenetics Medicine & Life Sciences 100%
Tamoxifen Medicine & Life Sciences 93%
Hispanic Americans Medicine & Life Sciences 84%
Estrogen Receptors Medicine & Life Sciences 82%
European Continental Ancestry Group Medicine & Life Sciences 81%
4-hydroxy-N-desmethyltamoxifen Medicine & Life Sciences 43%
Rangel, L. B. A., Taraba, J. L., Frei, C. R., Smith, L., Rodriguez, G., & Kuhn, J. G. (2014). Pharmacogenomic diversity of tamoxifen metabolites and estrogen receptor genes in Hispanics and non-Hispanic whites with breast cancer. Breast Cancer Research and Treatment, 148(3), 571-580. https://doi.org/10.1007/s10549-014-3191-4
Pharmacogenomic diversity of tamoxifen metabolites and estrogen receptor genes in Hispanics and non-Hispanic whites with breast cancer. / Rangel, Leticia B.A.; Taraba, Jodi L.; Frei, Christopher R.; Smith, Lon; Rodriguez, Gladys; Kuhn, John G.
In: Breast Cancer Research and Treatment, Vol. 148, No. 3, 25.11.2014, p. 571-580.
Rangel, LBA, Taraba, JL, Frei, CR, Smith, L, Rodriguez, G & Kuhn, JG 2014, 'Pharmacogenomic diversity of tamoxifen metabolites and estrogen receptor genes in Hispanics and non-Hispanic whites with breast cancer', Breast Cancer Research and Treatment, vol. 148, no. 3, pp. 571-580. https://doi.org/10.1007/s10549-014-3191-4
Rangel LBA, Taraba JL, Frei CR, Smith L, Rodriguez G, Kuhn JG. Pharmacogenomic diversity of tamoxifen metabolites and estrogen receptor genes in Hispanics and non-Hispanic whites with breast cancer. Breast Cancer Research and Treatment. 2014 Nov 25;148(3):571-580. https://doi.org/10.1007/s10549-014-3191-4
Rangel, Leticia B.A. ; Taraba, Jodi L. ; Frei, Christopher R. ; Smith, Lon ; Rodriguez, Gladys ; Kuhn, John G. / Pharmacogenomic diversity of tamoxifen metabolites and estrogen receptor genes in Hispanics and non-Hispanic whites with breast cancer. In: Breast Cancer Research and Treatment. 2014 ; Vol. 148, No. 3. pp. 571-580.
@article{3e988514f6c74edabed56ced6b61545b,
title = "Pharmacogenomic diversity of tamoxifen metabolites and estrogen receptor genes in Hispanics and non-Hispanic whites with breast cancer",
abstract = "Ethnic differences in patient genetics and breast cancer (BC) biology contribute to ethnic disparities in cancer presentation and patient outcome. We prospectively evaluated SNPs within phase I and phase II tamoxifen (TAM) metabolizing enzymes, and the estrogen receptor gene (ESR1), aiming to identify potential pharmacogenomic ethnicity patterns in an ER-positive BC cohort constituted of Hispanic and Non-Hispanic White (NHW) women in South Texas. Plasma concentrations of TAM/metabolites were measured using HPLC. CYP2C9, CYP2D6 and SULT1A1 genotypes were determined by DNA sequencing/Pyrosequencing technology. ESR1 PvuII and XbaI SNPs were genotyped using Applied Biosystems Taqman{\textregistered} Allelic Discrimination Assay. Hispanics had higher levels of TAM, 4-hydroxytamoxifen, and endoxifen than NHWs. There was a higher prevalence of CYP2D6 EM within Hispanics than NHWs, which corresponded to higher endoxifen levels, but no differences were verified with regard to CYP2C9 and SULT1A1. We found a higher incidence of the wild type forms of the ESR1 in Hispanics than NHWs. The performance status, the disease stage at diagnosis, and the use of aromatase inhibitors might have overcome the overall favorable pharmacogenomics profile of Hispanics when compared to NHWs in relation to TAM therapy responsiveness. Our data strongly point to ethnical peculiarities related to pharmacogenomics and demographic features of TAM treated Hispanics and NHWs. In the era of pharmacogenomics and its ultimate goal of individualized, efficacious and safe therapy, cancer studies focused on the Hispanic population are warranted because this is the fastest growing major demographic group, and an understudied segment in the U.S.",
keywords = "Estrogen receptor gene, Hispanics, Metabolites, Pharmacogenomics, Tamoxifen",
author = "Rangel, {Leticia B.A.} and Taraba, {Jodi L.} and Frei, {Christopher R.} and Lon Smith and Gladys Rodriguez and Kuhn, {John G.}",
note = "Funding Information: Acknowledgments The present work was supported in part by the American Foundation for Pharmaceutical Education Post-Pharm.D. Funding Information: Fellowship, the Cancer Center Council Grant, and the San Antonio Cancer Institute NCI Cancer Center Support Grant P30 CA054174. LBAR was supported by The National Council for Scientific and Technological Development (CNPq)/Ciencias sem Fronteiras Program, Brazil. Publisher Copyright: {\textcopyright} 2014, Springer Science+Business Media New York.",
journal = "Breast Cancer Research and Treatment",
T1 - Pharmacogenomic diversity of tamoxifen metabolites and estrogen receptor genes in Hispanics and non-Hispanic whites with breast cancer
AU - Rangel, Leticia B.A.
AU - Taraba, Jodi L.
AU - Frei, Christopher R.
AU - Smith, Lon
AU - Rodriguez, Gladys
AU - Kuhn, John G.
N1 - Funding Information: Acknowledgments The present work was supported in part by the American Foundation for Pharmaceutical Education Post-Pharm.D. Funding Information: Fellowship, the Cancer Center Council Grant, and the San Antonio Cancer Institute NCI Cancer Center Support Grant P30 CA054174. LBAR was supported by The National Council for Scientific and Technological Development (CNPq)/Ciencias sem Fronteiras Program, Brazil. Publisher Copyright: © 2014, Springer Science+Business Media New York.
N2 - Ethnic differences in patient genetics and breast cancer (BC) biology contribute to ethnic disparities in cancer presentation and patient outcome. We prospectively evaluated SNPs within phase I and phase II tamoxifen (TAM) metabolizing enzymes, and the estrogen receptor gene (ESR1), aiming to identify potential pharmacogenomic ethnicity patterns in an ER-positive BC cohort constituted of Hispanic and Non-Hispanic White (NHW) women in South Texas. Plasma concentrations of TAM/metabolites were measured using HPLC. CYP2C9, CYP2D6 and SULT1A1 genotypes were determined by DNA sequencing/Pyrosequencing technology. ESR1 PvuII and XbaI SNPs were genotyped using Applied Biosystems Taqman® Allelic Discrimination Assay. Hispanics had higher levels of TAM, 4-hydroxytamoxifen, and endoxifen than NHWs. There was a higher prevalence of CYP2D6 EM within Hispanics than NHWs, which corresponded to higher endoxifen levels, but no differences were verified with regard to CYP2C9 and SULT1A1. We found a higher incidence of the wild type forms of the ESR1 in Hispanics than NHWs. The performance status, the disease stage at diagnosis, and the use of aromatase inhibitors might have overcome the overall favorable pharmacogenomics profile of Hispanics when compared to NHWs in relation to TAM therapy responsiveness. Our data strongly point to ethnical peculiarities related to pharmacogenomics and demographic features of TAM treated Hispanics and NHWs. In the era of pharmacogenomics and its ultimate goal of individualized, efficacious and safe therapy, cancer studies focused on the Hispanic population are warranted because this is the fastest growing major demographic group, and an understudied segment in the U.S.
AB - Ethnic differences in patient genetics and breast cancer (BC) biology contribute to ethnic disparities in cancer presentation and patient outcome. We prospectively evaluated SNPs within phase I and phase II tamoxifen (TAM) metabolizing enzymes, and the estrogen receptor gene (ESR1), aiming to identify potential pharmacogenomic ethnicity patterns in an ER-positive BC cohort constituted of Hispanic and Non-Hispanic White (NHW) women in South Texas. Plasma concentrations of TAM/metabolites were measured using HPLC. CYP2C9, CYP2D6 and SULT1A1 genotypes were determined by DNA sequencing/Pyrosequencing technology. ESR1 PvuII and XbaI SNPs were genotyped using Applied Biosystems Taqman® Allelic Discrimination Assay. Hispanics had higher levels of TAM, 4-hydroxytamoxifen, and endoxifen than NHWs. There was a higher prevalence of CYP2D6 EM within Hispanics than NHWs, which corresponded to higher endoxifen levels, but no differences were verified with regard to CYP2C9 and SULT1A1. We found a higher incidence of the wild type forms of the ESR1 in Hispanics than NHWs. The performance status, the disease stage at diagnosis, and the use of aromatase inhibitors might have overcome the overall favorable pharmacogenomics profile of Hispanics when compared to NHWs in relation to TAM therapy responsiveness. Our data strongly point to ethnical peculiarities related to pharmacogenomics and demographic features of TAM treated Hispanics and NHWs. In the era of pharmacogenomics and its ultimate goal of individualized, efficacious and safe therapy, cancer studies focused on the Hispanic population are warranted because this is the fastest growing major demographic group, and an understudied segment in the U.S.
KW - Estrogen receptor gene
KW - Hispanics
KW - Metabolites
KW - Pharmacogenomics
KW - Tamoxifen
JO - Breast Cancer Research and Treatment
JF - Breast Cancer Research and Treatment


text:
Home > Essential Information for the Investor > Invest for a Change Conference, by Epoch Times, June 29, 2017, Tel Aviv University
Invest for a Change Conference, by Epoch Times, June 29, 2017, Tel Aviv University
Invest for a Change – Invest in Change, Invest Differently, Make a Change!
"I would like to share with you why we chose to partner with EPOCH TIMES for this important evening, an evening designed to focus on and commit to creating change within the business and investment world, and to encourage us all to act in accordance with a moral compass.
From the perspective granted me by dint of age and experience in the business world, both in Israel and abroad, I see it as a personal mission to be part of a group that is going to make a real change in Israel's business community.
The past few years have been extraordinary in our real estate world, with investors enjoying exceptionally high returns. So what exactly needs to change?
King Solomon in the Book of Proverbs says: "Eminence is transitory" – wealth, greatness and power do not last forever.
The extraordinary returns real estate investments have achieved in recent years will not continue, and therefore my advice to you is to exercise caution in the face of temptation – even Madoff's investors profited in the early years, and substantially. The purpose of investing is to profit. This is also our goal as an investment firm, but not at any price. Unfortunately, we live in a society that sanctifies personal gain, money and power, and does not attribute sufficient importance to the way in which this profit is achieved. In such an environment it is hardly surprising that public funds are squandered by controlling shareholders. Nowadays it's clearer than ever that improving the business environment must be considered a matter of vital necessity. The change that many of us wish to see is a combination of profitable investments and ethical conduct, a combination that will lead us as a society on a better path.
While the legal system's efforts to solve the problems of fraud, deception and dishonest conduct are most welcome, the law alone is not enough for it can never cover every situation. In any case, the wheels of justice move slowly, and thus there is no substitute for ethical responsibility, especially in an environment that lacks enforcement and deterrence.
Conducting business with integrity does not attract the import it is due from lawmakers, the media and regulators.
Perhaps if honest conduct in business received the attention it deserves we would at least be aware of fraud and deception and could reveal it before it is too late, saving us from having to pick up the pieces only after the damage has been done and investors have already lost their money.
And as we are dealing with the law, I want to turn to the most venerable legal and ethical system – Judaism, the Judaism I was raised on and not the one so poorly presented in public.
Judaism not only demands that we proactively refrain from forbidden acts, it also calls upon us to avoid acts that involve conflicts of interest or exploitation of a person's weakness, as detailed in the Bible portion of Leviticus: "Do not curse the deaf, do not place a stumbling block before the blind. Do not pervert justice; do not show partiality to the poor or favoritism to the great, but judge your neighbor fairly. Do not stand idly by the blood of your neighbor. Do not hate your brother in your heart. You must surely reprove your fellow so that you do not incur sin on account of him."
We have a duty to take action, to warn a person who is committing a sin, and prevent him from continuing in this manner.
The mitzvah or command to "not stand idly by the blood of your neighbor" – which has even been partially adopted by Israeli law – forbids us to do nothing while some one is in mortal danger. This mitzvah has been interpreted by our sages to apply to any case in which a person may be harmed, including suffering financial damage, and one does nothing to warn him.
Our sages interpret the verse "do not place a stumbling block before the blind" to apply to any person who lacks information about a particular subject. Professor Nechama Leibowitz expands the interpretation of the verse, calling it a positive commandment to proactively prevent a person from failing.
This means if we know of a person who, due to a lack of knowledge or experience, may enter into a bad transaction with dishonest people, we must take action to prevent him from making this investment.
Maimonides ("Rambam") interprets the verse in such a way whereby blindness may also refer to a low moral level, and the obstacle is the temptation of something forbidden. Which means that we, as a society, must create an environment in which legislation, enforcement and punishment do not place a stumbling block before the blind.
We need a society that condemns fraudulent acts and exploitation, a society that has other norms and wields tools to reward different behavior.
Several years ago I became aware of a person who was set on investing public funds with parties that I knew to be disreputable. Since I felt a responsibility to warn this person, and since I knew his neighbor, I sent a message to him via that neighbor.
The person in question responded that he was indeed aware that these people were shady but that he was confident that he would make a profit with them. Incidentally, this same person was recently released from prison.
Integrity or lack of integrity can never be relative, it's a matter of black and white.
In a properly functioning society, fraud or acting exclusively for one's personal advantage should be "successful" only once but unfortunately this is not always the case. The practice of serving one's personal interest has long since become legitimate and normative in our society.
So, is it possible to make a profit honestly?
Yes, it's possible – but not easy. It requires that we work much harder and the challenges that stand before us, as difficult as they may be, are not the domain of those who do not adhere to these fundamental values. But in truth, this is the simpler case. I want to focus on another, more challenging, situation in which the choice to act with transparency and integrity may seemingly contradict making a profit, which is not unusual in the world of business.
I use the term "seemingly" due to my belief that preserving our values should not cost us money but, rather, should create value. When we provide a service or manufacture a product, we have a profound obligation to stand behind that service or product and to take responsibility for it even during difficult times. If you are an authority in a specific field, then your responsibility is tenfold. The good news, if we allow ourselves to take a different view, is that transparency and ethical and moral management of our businesses are not at odds with making a profit. On the contrary, ethical business conduct makes excellent commercial sense. Whether you call it "smart ethics", or "enlightened egotism", taking the moral path is good for business and makes sound long-term economic sense. This is certainly desirable for those among us who think long-term.
The financial crisis of 2008 was the most serious in the past century: companies were obliterated and securities and bonds were rendered worthless. From within this challenging environment, we did not abandon our investors. Rather, we worked hard – without compensation – to minimize losses. To my regret, we did not manage to prevent them all but for many investments that were in real danger of losing money, we did succeed in preventing losses and even making a profit for our investors, and that while other investment managers worked only to protect themselves.
This cost us, and continues to cost us, considerable resources. And this, perhaps, is the most important point. Similar to the Law of Conservation of Energy, I believe in the Law of the Conservation of Value. Hard work that has been done, even at a considerable cost, will never have been made in vain, it will never be for nothing.
The value is not lost; even if we eat into our profits, the value is preserved: in our reputation, in our investors' increasing trust in us, and in the extensive experience that we accumulated during and after the crisis.
Therefore, despite these and other cases that we continue to hear about, I refuse to give in to pessimism. I believe that consistent honest conduct is the most effective and rewarding, certainly in the long run, and I see it as our shared mission to expand the sphere of those who are guided by these principles.
If everyone plays his part, whether out of religious conviction, private conscience or pragmatism, together we can leave to our children and grandchildren a more decent country and society grounded in ethical business conduct and a healthier commercial world.
My hope is that we will have the merit of seeing a better, more honest business world, and be part of a group that leaves a legacy for future generations, in which business values and ethics are, indeed, inseparable.
Opening remarks by Elchanan Rosenheim (Translated from Hebrew)
For the EPOCH TIMES Invest for a Change Conference
June 29, 2017, Tel Aviv University


text:
my life, as far as i know.
About Jason Schlachet
The Schlachet Family
Jason November 13, 2008
ok, well we've finally done it. we bought a condo in san francisco. 3br, 2ba, top floor unit. it meets all our criteria: gas appliances, recent construction, low unit count building, close to public transit, parking.
we've been looking off and on for more than a year– our latest stretch was 8 months long. it seemed like it took just as long to collect all our documentation, fill out all the paperwork, and attend all the calls and meetings.
over the next few weekends we'll be busy painting the place. our official move date is this coming monday. most of our stuff is already boxed up. it will take us a couple weeks to complete all the tasks we want to get done before we deem the place presentable.
my dad would be so proud.
662cappsan francisco
House warming party invitation will be expected ! Don't leave out the old guy. :)
Congrats on the new home. Can't wait to see it. I am so happy for both of you. This is great !
Welcome to the building!
This is my personal blog. I like wine, photography, and technology.
Looking for other Schlachets?
Let me know by leaving a comment. Thanks!.
Twitter – @filmcamera
Twitter – @schlachet
Other People to check out
Jared Schlachet
mary hanna
other sites to check out
curbed – sf
Daniel Schlachet on family.
Lisa G on The Schlachet Family
Andrea Hartley (Schlachet) on The Schlachet Family
Andrea Lester on The Schlachet Family
Adrian on family.
Linda Rosenblatt on The Schlachet Family
jaye m. schlachet on family.
Looking at photos | n j w v on Recording the Action, or not.
life movement
transcribed
Archives Select Month December 2014 (1) July 2013 (1) March 2013 (1) February 2013 (2) January 2013 (1) September 2012 (1) July 2012 (2) June 2012 (1) January 2012 (2) November 2011 (1) October 2011 (2) September 2011 (4) July 2011 (2) June 2011 (2) May 2011 (4) April 2011 (1) March 2011 (1) February 2011 (7) January 2011 (16) December 2010 (6) November 2010 (2) October 2010 (6) September 2010 (8) August 2010 (3) July 2010 (4) June 2010 (1) May 2010 (1) April 2010 (2) March 2010 (4) February 2010 (1) January 2010 (1) December 2009 (4) October 2009 (4) September 2009 (6) August 2009 (5) July 2009 (5) June 2009 (1) May 2009 (3) April 2009 (8) March 2009 (6) February 2009 (15) January 2009 (6) December 2008 (3) November 2008 (3) October 2008 (1) September 2008 (1) August 2008 (5) July 2008 (4) June 2008 (6) May 2008 (1) April 2008 (4) March 2008 (6) February 2008 (2) January 2008 (3) December 2007 (10) November 2007 (5) October 2007 (12) August 2007 (3) June 2007 (4) May 2007 (12) April 2007 (9) March 2007 (13) February 2007 (9) January 2007 (8) December 2006 (7) November 2006 (13) October 2006 (8) September 2006 (10) August 2006 (6) July 2006 (15) June 2006 (10) May 2006 (13) April 2006 (9) March 2006 (10) February 2006 (14) January 2006 (17) December 2005 (17) November 2005 (11) October 2005 (9) September 2005 (16) August 2005 (11) July 2005 (6) June 2005 (9) May 2005 (13) April 2005 (14) March 2005 (13) February 2005 (13) January 2005 (10) December 2004 (6) November 2004 (17) October 2004 (11) September 2004 (19) August 2004 (17) July 2004 (17) June 2004 (18) May 2004 (29) April 2004 (17) March 2004 (15) February 2004 (16) January 2004 (21) December 2003 (32) November 2003 (20) October 2003 (21) September 2003 (20) August 2003 (26) July 2003 (15) June 2003 (21) May 2003 (16) April 2003 (17) March 2003 (14) February 2003 (25) January 2003 (15) March 2002 (1) February 2001 (3) January 2001 (1) September 2000 (2) August 2000 (1) July 2000 (1) June 2000 (1) April 1999 (1) March 1999 (1)
Theme: Convention by Fimply


The combined sales tax rate for Eustis, FL is 7%. This is the total of state, county and city sales tax rates. The Florida state sales tax rate is currently 6%. The Lake County sales tax rate is 1%. Eustis sales tax rate is 0%.


text:
Q: NullPointerException encountered when converting RTF to PDF with iText 4.2.1 A requirement was forwarded to me to convert a dynamic RTF document to PDF, populating all attributes in the RTF prior to conversion.
Following the exact example from this blog post, I encountered a NullPointerException when running the application.
Note: I know that RTF document support on iText has been abandoned but it is already used by the client.
The exact stacktrace:
Exception in thread "main" java.lang.NullPointerException
    at com.lowagie.text.rtf.parser.destinations.RtfDestinationFontTable.importSystemFonts(RtfDestinationFontTable.java:571)
    at com.lowagie.text.rtf.parser.destinations.RtfDestinationFontTable.init(RtfDestinationFontTable.java:206)
    at com.lowagie.text.rtf.parser.destinations.RtfDestinationFontTable.setParser(RtfDestinationFontTable.java:190)
    at com.lowagie.text.rtf.parser.destinations.RtfDestinationMgr.addDestination(RtfDestinationMgr.java:184)
    at com.lowagie.text.rtf.parser.ctrlwords.RtfCtrlWordHandler.<init>(RtfCtrlWordHandler.java:175)
    at com.lowagie.text.rtf.parser.ctrlwords.RtfCtrlWordMap.<init>(RtfCtrlWordMap.java:607)
    at com.lowagie.text.rtf.parser.ctrlwords.RtfCtrlWordMgr.<init>(RtfCtrlWordMgr.java:93)
    at com.lowagie.text.rtf.parser.RtfParser.init(RtfParser.java:655)
    at com.lowagie.text.rtf.parser.RtfParser.convertRtfDocument(RtfParser.java:551)
    at za.co.sindi.utils.Prints.printToPDFWithIText(Prints.java:114)
    at za.co.sindi.utils.Prints.main(Prints.java:150)

The source example:
    public static void printToPDFWithIText() {
        InputStream input = null;
        OutputStream output = null;
        Document document = null;

        try {
            input = new BufferedInputStream(new FileInputStream(new File("C:/testPDF.rtf")));
            output = new BufferedOutputStream(new FileOutputStream(new File("C:/testPDF_" + System.nanoTime() + ".pdf")));
            document = new Document();
            PdfWriter.getInstance(document, output);
            document.open();
            RtfParser parser = new RtfParser(null);
            parser.convertRtfDocument(input, document); //NullPointerException is here (line 114)
            document.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (DocumentException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            if (input != null) {
                try {
                    input.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

            if (output != null) {
                try {
                    output.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

//          if (document != null && document.isOpen()) {
//              document.close();
//          }
        }
    }

How do I solve this?

A: The guilty culprit is the following implementation on com.lowagie.text.rtf.parser.destinations.RtfDestinationFontTable class:
private Properties getEnvironmentVariables() throws Throwable {
    Properties environmentVariables = new Properties();
    String operatingSystem = System.getProperty("os.name").toLowerCase();
    Runtime runtime = Runtime.getRuntime();
    Process process = null;
    if (operatingSystem.indexOf("windows 95") > -1
            || operatingSystem.indexOf("windows 98") > -1
            || operatingSystem.indexOf("me") > -1) {
        process = runtime.exec("command.com /c set");
    } else if ((operatingSystem.indexOf("nt") > -1)
            || (operatingSystem.indexOf("windows 2000") > -1)
            || (operatingSystem.indexOf("windows xp") > -1)
            || (operatingSystem.indexOf("windows 2003") > -1)
            || (operatingSystem.indexOf("windows vista") > -1)) {
        process = runtime.exec("cmd.exe /c set");
    } else {
        process = runtime.exec("env");
    }
    BufferedReader environmentStream = new BufferedReader(new InputStreamReader(process.getInputStream()));
    String inputLine = "";
    int idx = -1;
    while ((inputLine = environmentStream.readLine()) != null) {
        idx = inputLine.indexOf('=');
                inputLine.substring(idx + 1));
    }
}

The developer, obviously, checked for Windows Operating Systems starting from Windows 95 to Windows Vista. He/She forgot to check Windows 7 and Windows 8 environment.
The System.getProperty("os.name"); returns Windows 7 on my development workstation and, thus the Runtime tries to invoke the env process, which does not exists on a Windows environment. And since this throws a Throwable, the following instance occurs:
private void importSystemFonts() {
    Properties pr = null;
    try {
        pr = getEnvironmentVariables();
    } catch (Throwable e) {
    }
    String systemRoot = pr.getProperty("SystemRoot");
    Runtime runtime = Runtime.getRuntime();
    String fileSeperator = System.getProperty("file.separator");
    int r = FontFactory.registerDirectory(systemRoot + fileSeperator + "fonts");
}

As you can see, the pr field is null initially. Now, the guilty method (already mentioned) has thrown an exception and importSystemFonts does nothing to cater for it, though it catches it. Hence pr remains null.
the line String systemRoot = pr.getProperty("SystemRoot"); now throws the NullPointerException.
How do we resolve it?
Before running your program, you will have to cheat a bit: Fool the library that it's not Windows 7 or higher. In my case, I set it to Windows Vista.
This must be place prior to executing your code:
System.setProperty("os.name", "Windows Vista");

Now, run your code and you will see the exception disappear.
Note: Seeing that this class is abandoned, USE IT AT YOUR OWN RISK. I posted this to help others, if you're still using this version of iText.

A: Version 1:
If you build the rft.jar anyway you can also just add one more condition to the above mentioned if:
|| (operatingSystem.indexOf("windows 7") > -1))

(Since this decides only what to call (process = runtime.exec("cmd.exe /c set");))
Update: (Version2)
And an even better implementation is:
//1. delete method 'getEnvironmentVariables(...)' completely
//2. import system fonts like this:
private void importSystemFonts() {
 String systemRoot = System.getenv("SystemRoot");
 String fileSeperator = System.getProperty("file.separator");
 FontFactory.registerDirectory(systemRoot + fileSeperator + "fonts");
}


The Best Buggy Focus Group by and large (apart from one member) thought I had completely lost it, when I overlooked my all terrain pushchairs to take the Stokke Xplory out in fresh deep-ish snow! I admit, even I was skeptical, but experiments need to be done, and everyone told me the Xplory was good in snow!
So out we went……and the Stokke Xplory handled the snow brilliantly. As the photos show, the snow almost covered the front wheels in places but the Xplory kept on going forwards. At no point did we need to reverse, or pull the Xplory, it just kept on going! I guess worst case we could have kicked the Xplory into two wheel mode and pulled it, but there was no need for that.
I can't speak for how the Stokke Xplory handles more icy or compacted snow, but it did great through the several inches of fresh snow we had overnight here in the UK.
Oh and the member of the Best Buggy Focus Group who wasn't surprised, said that her Xplory went through boggy mud and on the sand too!


Power Hour: Where Professional Women Lunch in Chicago - the glu.
Back in the day, a "power lunch" was a gathering where ideas—and rocks glasses—were laid out on the table Mad Men-style. Today, there's no question that this mid-day meal is an opportunity to network, brainstorm, and maybe seal a new business deal. As proof positive, we tapped three power players to find out their go-to spot for meeting and eating in Chicago.
Dordek and her team help businesses thrive with the use of predictive assessment technology and an array of proven sales consulting, training, development, and coaching interventions.
Our offices are right above the restaurant and, in my opinion, they have the best lunch special in River North. It's delicious and I take a lot of people there—especially those who are a bit more adventurous. I am a big fan of Lettuce Entertain You and the Melmans, who I see every time I'm there.
Ramen-San | 59 West Hubbard Street | 312-377-9950 | ramensan.com.
What to Order: I love the lunch special, which includes a salad, protein of your choice, rice, pickled cucumbers, and a small bowl of ramen. In my mind, it's the perfect lunch: delicious, filling, visually beautiful, and fast.
Who to Take: I am a very adventurous eater, so I check with my lunch guests first to make sure there is something on the menu for them. It's lively, but you can still hear yourself talk, so it works for most occasions—with the exception of more formal ones when you need to do a deal over lunch.
Seal the Meal: I remember one lunch several years ago, I took a colleague with me to meet a prospect. She and I clicked so quickly, we ended up leaving my male colleague out of the conversation because the connection between us was so strong. We had a lot in common—we were passionate about our careers, we had children the same age, we loved food and travel, etc. Not long after the lunch, I worked with her company. Later, she joined a board on which I served as president, and we remain good friends today.
Susanna Kalnes I President and Owner of Take Shape Communications Inc.
Kalnes specializes in media relations, PR, social media, and strategic communications for a wide array of clients based in and out of Chicago.
I am a member of Soho House, so I like to go there for lunch, either on the 5th floor in the Club Level or the 6th floor by the pool in the summertime.
Soho House | 113 North Green Street | 312-521-8000 | sohohousechicago.com.
Susanna Kalne I Soho House I President and Owner of Take Shape Communications Inc.
What to Order: I have recently (in the past few months) become vegetarian—though I still eat seafood. So, I like to order the toast with avocado and a poached egg, the tuna tartare, or the salmon.
Who to Take: I take my current and potential PR clients there. It's a gorgeous facility, it's not too crowded or loud during the day, and it's a perfect setting to think creatively and brainstorm. As a member, I can bring up to three people per day, so it's a great option for client entertaining.
Seal the Meal: I think I work best when I'm there because it's a space that makes me feel more creative. I have written articles that have been published there, come up with some brilliant media campaigns, and have made new business connections—just from networking there over the lunch hour.
Adams has counseled dozens of top executives, including governors, CEOs, commissioners, and presidents of organizations on key business, crisis, and organizational communications issues for the largest, independent, female-owned public relations consultancy in the United States.
It's on the river—an increasingly hot spot through the city—and in the Chicago Mercantile Exchange Center (the "Merc"), which is a centerpiece of Chicago's business district.
Rivers | 30 South Wacker Drive | 312-559-1515 | riversrestaurant.com.
What to Order: Seafood has been my go-to here, including the grilled Atlantic salmon, asiago-crusted sea scallops, and Chilean sea bass.
Who to Take: I've personally taken three CEOs there in just the last six months.
Seal the Meal: With one of the CEOs, I secured a business lead as well as multiple opportunities she connected me to with others around Chicago.


Soon after the United States entered World War II, the federal government decided that bicycle manufacturing should be brought under new guidelines so that bicycles might contribute to materials conservation efforts, provide local transportation for individuals in critical occupations, and support war production at factories that made armaments and aircraft. A series of orders reduced designs to bare essentials, limited metal and rubber content, set output quotas, and promoted the use of bicycles among adult civilians. Production of children's bicycles, which comprised 85 percent of the prewar market, was suspended. These measures were designed to conserve rubber and metals needed for war materiel and complement gasoline and automobile tire rationing by providing a new, alternate form of transportation for war production workers and other priority purposes. In December 1941, the Office of Production Management (OPM) and leading manufacturers developed specifications for a simplified bicycle dubbed the "Victory bicycle" by government and media. OPM reviewed prototypes submitted for examination, including this 1941 Iver Johnson prototype. A standard design, based in part on the Iver Johnson, was adopted. Regulations finalized in March 1942 specified that bicycles would be lightweight – not more than 31 pounds, about two-thirds the weight of prewar bicycles – and they would be made only of steel, with no copper or nickel parts. Chrome plating was limited to a few small pieces of hardware. Handlebars and wheel rims would be painted instead of chrome plated, and most accessories (chain guard, basket, luggage rack, bell, whitewall tires) were eliminated. Tire size was limited to a width of 1.375 inches, much narrower than balloon tires on prewar children's bikes. Production goals were set at 750,000 Victory bicycles per year by twelve manufacturers, approximately 40 percent of total prewar production but representing a significant increase in the number of adult bicycles. Robert Berner, an OPM official who reviewed the prototypes, was permitted to keep this Iver Johnson bicycle, and he rode it near his home in Alexandria, Virginia. He donated it to the National Museum of American History in 1995.


VIDEO: Tune into this webinar as Matt Bromiley of SANS Institute and Seth Hall of CoreLight explain the power of Bro (now known as Zeek), where it fits in the security landscape and how it can help incident responders do their jobs quickly and effectively.
VIDEO: Ransomware hacks can bypass your perimeter controls and infect your critical systems, brining your business to a halt. Unfortunately, focusing on prevention technologies, with point security products, may not be sufficient enough to fight these key security concerns. This webinar contains key insights on a ransomware cyber kill chain.


text:
name             'germinator_ubuntu_base'
maintainer       'John Leacox'
license          'Apache 2'
description      'Installs/Configures germinator_ubuntu_base'
version          '0.1.0'
supports         'ubuntu'

depends 'apt'
depends 'germinator_base'


text:
Report: China May Slash Tariffs on U.S. Autos to 15 Percent
Bill Pugliano/Getty Images
Nine days after President Donald Trump announced China would cut auto tariffs, the import duty cuts appear to be underway.
Bloomberg News reported that a proposal to cut the tariffs on U.S. made autos to 15 percent from 40 percent had been submitted to China's cabinet. The Bloomberg story cited people familiar with the matter.
China slashed its tariff on imported cars from 25 percent to 15 percent in May, hoping to appease President Trump into holding off on raising tariffs. But after the U.S. imposed tariffs on $50 billion of Chinese goods, it raised tariffs on U.S. autos to 40 percent in July in retaliation.
China has agreed to reduce and remove tariffs on cars coming into China from the U.S. Currently the tariff is 40%.
— Donald J. Trump (@realDonaldTrump) December 3, 2018
Shares of General Motors and Ford jumped initially jumped on the news, with both rising more than 2 percent. Tesla shares also rose. But by noon, shares of Ford and Tesla were up by less than 1 percent while shares of General Motors continued to climb.
Trump appeared to preview an announcement on the tariffs from China in a tweet Tuesday morning.
Very productive conversations going on with China! Watch for some important announcements!
Even after the cuts, however, Chinese tariffs on autos will still be relatively high. The United States charges a tariff of 2.5 percent on cars, minivans and sport utility vehicles. Pick-up trucks are protected by a U.S. tariff of 25 percent. Even with a 15 percent tariff, it is unlikely many automakers will shift production out of China.
AsiaEconomyPoliticsautomakerscarsChinaFordGMTariffsTeslatradetrucks


text:
namespace Myra.Utility
{
	internal static class StringUtils
	{
		public static int Length(this string s)
		{
			if (string.IsNullOrEmpty(s))
			{
				return 0;
			}

			return s.Length;
		}
	}
}


text:
Q: Change layout/orientation of json file to {key: [v1, v2], …} from {key: {index_1, v1, index_2, v2}} I have a dataframe
`data = np.array([['val1', 'val2'], ['val3', 'val4']])
dataFrame = pd.DataFrame(data, columns = ['key1', 'key2'])
I need to conver it into json.
By default the outout looks like:
{"key1":{"0":"val1","1":"val3"},"key2":{"0":"val2","1":"val4"}}
`
I need it in the following layout.
{'key1':['val1','val2'],'key2':['val3','val4']}
I have looked up the option on pandas and none of them give me the desired output.

A: You might want to use to_dict and json.dumps:
import json

out = json.dumps(dataFrame.to_dict(orient='list'))

Output: '{"key1": ["val1", "val3"], "key2": ["val2", "val4"]}'


text:
About Fundraise Your Way
2020 Fundraise Your Way
Come Find Me, set to a festive and moving score, tells the story of Ben Patterson, a young boy with Aspergers, who finds the holiday season both joyful and challenging. When his widowed father is deployed on a top-secret mission just before the holidays, Ben and his sister Kami's already turbulent lives are shaken again. With a wish, a letter, and some unique seasonal help, the Patterson family discovers what just an ounce of belief can do. Told through the lens of a child on the spectrum, we learn the importance of living authentically, feeling passionately, and holding an unwavering hope in the magic of Christmas.
We're raising funds for the mission of Autism Speaks - enhancing lives today and accelerating a spectrum of solutions for tomorrow.
Holly Reed
Results Pending
© 2021 Autism Speaks Inc. Autism Speaks and Autism Speaks Design are registered trademarks owned by Autism Speaks Inc. All rights reserved.


text:
Kerry Fox
Ronald Pickup
Drama > War Drama
Drama > Period Film
Romance > Romantic Drama
Darkest Hour (2017)
directed by Joe Wright
featuring Gary Oldman, Kristin Scott Thomas, Lily James, Stephen Dillane, Ronald Pickup
John Adams (2008)
directed by Tom Hooper
featuring Paul Giamatti, Laura Linney, Stephen Dillane, Danny Huston, David Morse, Sarah Polley, Tom Wilkinson, Rufus Sewell
The Greatest Game Ever Played (2005)
directed by Bill Paxton
featuring Shia LaBeouf, Stephen Dillane, Josh Flitter, Peyton List, Elias Koteas
directed by Tony Scott
featuring Robert Redford, Brad Pitt, Catherine McCormack, Stephen Dillane, Larry Bryggman
King Arthur (2004)
directed by Antoine Fuqua
featuring Clive Owen, Keira Knightley, Ioan Gruffudd, Stephen Dillane, Stellan Skarsgård
Perfect Sense (2012)
directed by David Mackenzie
featuring Eva Green, Ewan McGregor, Connie Nielsen, Ewen Bremner, Stephen Dillane, Denis Lawson
Two If by Sea (1996)
directed by Bill Bennett
featuring Denis Leary, Sandra Bullock, Stephen Dillane, Yaphet Kotto, Wayne Robson
The Cazalets (2001)
directed by Suri Krishnamma
featuring Hugh Bonneville, Stephen Dillane, Paul Rhys, Emma Griffiths-Malin, Catherine Russell, Frederick Treves, Ursula Howells
Savage Grace (2008)
directed by Tom Kalin
featuring Julianne Moore, Stephen Dillane, Eddie Redmayne, Hugh Dancy, Elena Anaya
Anna Karenina (2001)
directed by David Blair
featuring Helen McCrory, Kevin McKidd, Mark Strong, Douglas Henshall, Stephen Dillane, Amanda Root
Ordinary Decent Criminal (1999)
directed by Thaddeus O'Sullivan
featuring Kevin Spacey, Linda Fiorentino, Peter Mullan, Stephen Dillane, Helen Baxendale, David Hayman
Klimt (2007)
directed by Raúl Ruiz
featuring John Malkovich, Veronica Ferres, Saffron Burrows, Georgia Reeve, Stephen Dillane
directed by Henry Jaglom
featuring Stephen Dillane, Victoria Foyt, Vanessa Redgrave, Glynis Barber, Michael Brandon
directed by Brian Gilbert
featuring Christina Ricci, Stephen Dillane, Kerry Fox, Simon Russell Beale, Ioan Gruffudd
Welcome to Sarajevo (1997)
directed by Michael Winterbottom
featuring Stephen Dillane, Woody Harrelson, Marisa Tomei, Emira Nusevic, Kerry Fox
Fugitive Pieces (2008)
directed by Jeremy Podeswa
featuring Stephen Dillane, Rade Sherbedgia, Rosamund Pike, Ayelet Zurer, Robbie Kay
Nine Lives (2005)
directed by Rodrigo García
featuring Kathy Baker, Amy Brenneman, Elpidia Carrillo, Glenn Close, Stephen Dillane
Freakdog (2008)
directed by Paddy Breathnach
featuring Arielle Kebbel, Sarah Carter, Martin Compston, Stephen Dillane, Andrew Lee Potts, MyAnna Buring
44 Inch Chest (2010)
directed by Malcolm Venville
featuring Ray Winstone, Ian McShane, John Hurt, Tom Wilkinson, Stephen Dillane
God on Trial (2008)
directed by Andy DeEmmony
featuring Antony Sher, Rupert Graves, Dominic Cooper, Stellan Skarsgård, Stephen Dillane
The Rector's Wife (1994)
directed by Giles Foster
featuring Lindsay Duncan, Stephen Dillane, Ronald Pickup, Jonathan Coy, Miles Anderson
The Parole Officer (2001)
directed by John Duigan
featuring Steve Coogan, Lena Headey, Stephen Dillane, Om Puri, Steven Waddington
Love & Rage (1999)
directed by Cathal Black
featuring Greta Scacchi, Daniel Craig, Stephen Dillane, Valerie Edmond, Donal Donnelly
Storm (2009)
directed by Hans-Christian Schmid
featuring Kerry Fox, Anamaria Marinca, Stephen Dillane, Rolf Lassgård, Alexander Fehling
Frankie's House (1992)
directed by Peter Fisk
featuring Iain Glen, Kevin Dillon, Steven Vidler, Alan David Lee, Stephen Dillane
Wayne Robson
Victoria Foyt


text:
layout: post
title: Wiederinbetriebnahme der Reproduktionsbeleuchtung
---

Ich möchte auf dieser Seite die Fortschritte und Verfahren zu dokumentieren, die ich bei LegoHacks mache. Dazu gehören natürlich auch ordentliche Fotos von den Dingen, die meist eher klein sind. Und wenn dann die Beleuchtung nicht stimmt - zuviel Schatten oder zu dunkel - ist das auch nicht schön. Das macht dann auch keinen Spaß.

Daher musste die Reproduktionsbeleuchtung meines Vaters wiederbelebt werden. Nach mehreren Jahren unbenutzt im Keller war das Gerät doch arg verstaubt. Da der Staubsauger nicht mehr reichte, musste ordentlich geputzt und an den blanken Stellen mit WD40 konserviert werden. Jetzt sieht es wieder aus wie neu und darf die nächsten Jahre von Tüten geschützt im Keller verbringen.

Hier zwei Fotos von der einsatzbereiten Beleuchtung.
![Repro1](/images/Repro1.jpg)
![Repro2](/images/Repro2.jpg)

Die Fotos darf die gute alte Powershot G5 machen. Mit Weißabgleich und Makromodus gelingen erstaunlich gute Bilder. Die Protagonisten werden mit insgesamt 600W ins Rampenlicht gestellt. Da wird's im Keller auch ein bisschen wärmer.

Die ersten Hauptdarsteller sind der einstellbare Spannungsregler LM2596 und der Schrittmotortreiber A4988.

![Spannungsregler und Schrittmotortreiber](/images/LM2596-A4988.JPG)
![Spannungsregler](/images/LM2596.JPG)

Ich finde die Qualität überzeugt.


text:
Field Gulls homepage Horizontal - White Field Gulls a Seattle Seahawks community
Follow Field Gulls online:
Follow Field Gulls on Twitter
Follow Field Gulls on Facebook
Field Gulls main menu
Cigar Thoughts
Yahoo Seahawks News
Yahoo Seahawks Team Page
Yahoo Seahawks Report
Yahoo Seahawks Depth Chart
Yahoo Seahawks Transactions
Yahoo Seahawks Photos
BREAKING Seahawks, defensive coordinator Ken Norton Jr parting ways
Could Seahawks L.J. Collier be a healthy scratch against Pittsburgh?
By John P. Gilbert@JohnPGilbertNFL Sep 14, 2019, 8:00am PDT
Share All sharing options for: Could Seahawks L.J. Collier be a healthy scratch against Pittsburgh?
Photo by Joseph Weiser/Icon Sportswire via Getty Images
The Seattle Seahawks have had a rash of injuries during the offseason and training camp, and with a big pair of games in Week 2 against the Pittsburgh Steelers and the New Orleans Saints in Week 3, the team is looking to get its first glimpses of several players. Free agent defensive end Ziggy Ansah has yet to set foot on the field, as has first round pick L.J. Collier. Thus, with the early start in Week 2, Seattle fans could wake up to an early game present of two shiny new toys on the defensive line.
Or maybe not. With the Friday injury report released after practice, Collier was a full participant in practice, and is not listed in one of the categories where his play would be in doubt. Thus, one would seem to expect to get to see Collier play. However, there's an extremely interesting footnote to Collier's status from head coach Pete Carroll.
Interesting comment from Carroll on L.J. Collier that if he doesn't play Sunday it won't be due to health but if he fits into their rotations: 'If we want to put him up he can go.. In our minds he can play just got to wait and see what the rotations would be if we put him up.'
— Bob Condotta (@bcondotta) September 13, 2019
I could be wrong, but when I read that quote from Carroll, it sounds like he's saying that Collier might not play, and it might be because he wouldn't give the team the best rotation. In short, the team's first round pick might be on the bench behind players like Quinton Jefferson and Branden Jackson. Obviously, Carroll is famous for being perhaps a tad overly optimistic, as well as somewhat cagey in providing answers to the media and opponents regarding specifics, but just the idea that the team's top pick could start the season on the bench certainly piques my attention.
Thus, while the Hawks have certainly been patient with draft picks in the past, you have to go all the way back to the selection of Germain Ifedi in 2016 to find a player who started as a rookie after being the first player selected by the team. In fact, of the last four players taken first by the Seahawks, Ifedi is the only one who has started a game out of Ifedi, Malik McDowell, Rashaad Penny and L.J. Collier. If Chris Carson stays healthy and with Quinton Jefferson, Jadeveon Clowney and Ansah potentially ahead of Collier on the depth chart, it's possible this trend stays true through the entire 2019 season.
Which is scary.
Why the Seahawks fired Ken Norton Jr.
Pre-Snap Reads 1/18: Ken Norton Jr reportedly out as Seahawks defensive coordinator Read!